Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/316.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从树状视图拖动到图片框并连接元素_C# - Fatal编程技术网

C# 从树状视图拖动到图片框并连接元素

C# 从树状视图拖动到图片框并连接元素,c#,C#,我被这个问题困住了。我有一个相框的pictureBox和treeview。我想从treeview拖放到图片框中,然后在图片框中绘制另一张图片(第一个图片框是treeview中的地图,我有“Sings”) 这是可行的,但我如何连接,所以当我点击地图上的Sing时,它会获得某种焦点(框架或其他),并在treview中选择我用来制作图片框的treenode。当您将拖动的节点存储在PictureBox的标记中时,您已经创建了连接 要使其正常工作,您需要为创建的图片框编写一些事件 以下是最低要求: 单击我

我被这个问题困住了。我有一个相框的pictureBox和treeview。我想从treeview拖放到图片框中,然后在图片框中绘制另一张图片(第一个图片框是treeview中的地图,我有“Sings”)


这是可行的,但我如何连接,所以当我点击地图上的Sing时,它会获得某种焦点(框架或其他),并在treview中选择我用来制作图片框的treenode。

当您将拖动的节点存储在PictureBox的标记中时,您已经创建了连接

要使其正常工作,您需要为创建的
图片框
编写一些事件

以下是最低要求:

单击我设置
边框
时,选择已存储在
标记中的
树节点
,并明确设置
图片框
上的焦点。(PBs通常不会在单击时获得焦点,因此我们需要在代码中进行,以便捕获
LostFocus
事件..)

LostFocus
中,我只需删除
边框

picOneFaceUpA.LostFocus += (ss, ee) =>
{
    picOneFaceUpA.BorderStyle = BorderStyle.None;
};
别忘了设置treeview
HideSelection=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);
};