C# 从树状视图拖动到图片框并连接元素
我被这个问题困住了。我有一个相框的pictureBox和treeview。我想从treeview拖放到图片框中,然后在图片框中绘制另一张图片(第一个图片框是treeview中的地图,我有“Sings”)C# 从树状视图拖动到图片框并连接元素,c#,C#,我被这个问题困住了。我有一个相框的pictureBox和treeview。我想从treeview拖放到图片框中,然后在图片框中绘制另一张图片(第一个图片框是treeview中的地图,我有“Sings”) 这是可行的,但我如何连接,所以当我点击地图上的Sing时,它会获得某种焦点(框架或其他),并在treview中选择我用来制作图片框的treenode。当您将拖动的节点存储在PictureBox的标记中时,您已经创建了连接 要使其正常工作,您需要为创建的图片框编写一些事件 以下是最低要求: 单击我
这是可行的,但我如何连接,所以当我点击地图上的Sing时,它会获得某种焦点(框架或其他),并在treview中选择我用来制作图片框的treenode。当您将拖动的节点存储在PictureBox的标记中时,您已经创建了连接 要使其正常工作,您需要为创建的
图片框
编写一些事件
以下是最低要求:
单击我设置边框
时,选择已存储在标记中的树节点
,并明确设置图片框
上的焦点。(PBs通常不会在单击时获得焦点,因此我们需要在代码中进行,以便捕获LostFocus
事件..)
在LostFocus
中,我只需删除边框
:
picOneFaceUpA.LostFocus += (ss, ee) =>
{
picOneFaceUpA.BorderStyle = BorderStyle.None;
};
别忘了设置treeviewHideSelection=false代码>以便在焦点仍在PB上时可以看到选择
现在,根据您显示的图像,边界可能有点弱。为了获得更强烈的效果,您必须对绘制事件进行编码,以便在控件顶部绘制更华丽的内容..:
picOneFaceUpA.Paint += (ss, ee) =>
{
if (picOneFaceUpA.BorderStyle == BorderStyle.FixedSingle)
ee.Graphics.DrawRectangle(Pens.Orange, 0, 0,
picOneFaceUpA.ClientSize.Width - 1,
picOneFaceUpA.ClientSize.Height - 1);
};
在代码中使用picOneFaceUpA.Focus()代码>呼叫。这似乎与设置LostFocus
事件冲突,因此必须将其删除 Tnx人,但当我添加代码时,应用程序崩溃“试图读取或写入受保护的内存。这通常表示其他内存已损坏。”我在该方法中添加了该代码……这很奇怪。您应该按照设置picOneFaceUpA元素所有其他属性的顺序添加代码。我把它放在picOneFaceUpA.BackgroundImageLayout=ImageLayout.Stretch之后代码>我已经把双击事件和它的工作罚款……”picOneFaceUpA.MouseDoubleClick+=(ss,ee)=>{frmculturalmonment frame=new frmculturalmonment(picOneFaceUpA.Name);frame.ShowDialog();this.refresh();}`好的,听起来不错。其他活动还有问题吗?您需要删除picOneFaceUpA.Focus()代码>调用,因为它似乎与LostFocus
事件的创建冲突!(是的,我可以复制各种错误,这取决于我移动它的位置。我想定时版本可以工作,但实际上是必要的。)我已经更新了我的答案。。
picOneFaceUpA.LostFocus += (ss, ee) =>
{
picOneFaceUpA.BorderStyle = BorderStyle.None;
};
picOneFaceUpA.Paint += (ss, ee) =>
{
if (picOneFaceUpA.BorderStyle == BorderStyle.FixedSingle)
ee.Graphics.DrawRectangle(Pens.Orange, 0, 0,
picOneFaceUpA.ClientSize.Width - 1,
picOneFaceUpA.ClientSize.Height - 1);
};