C# winform 如何在Panel控件的拖拽DragDrop事件中获取Label对象

时间:2022-08-30 18:00:05
在C# winform中,在form窗体中有四个Panel控件(panel1、panel2、panel3、panel4)以及三个Label控件(label1、label2、label3)。
目前需要将任意一个Label控件对象拖入任意一个Panel控件中。一旦松开鼠标,那么拖拽过程结束。此时应当处理Panel控件的DragDrop事件。

请问,在Panel控件的DragDrop事件中,如何获取Label控件对象,用来判断拖入Panel控件的是哪个Label控件对象(label1、label2、label3)。

10 个解决方案

#1


通过label的tag标签

#2


引用 1 楼 starfd 的回复:
通过label的tag标签


能具体点吗?谢谢!

#4


引用 1 楼 starfd 的回复:
通过label的tag标签


关键想知道在Panel控件的拖拽DragDrop事件中,如何通过label的tag标签获取具体是哪个label对象被拖入panel控件中?

#5


其实不用tag,你将label的Name传递过去,然后在DragDrop中通过GetData获取Name,这时候就可以FindControl了

#6


引用 5 楼 starfd 的回复:
其实不用tag,你将label的Name传递过去,然后在DragDrop中通过GetData获取Name,这时候就可以FindControl了

能具体点吗?谢谢!

#7


e.Data.GetData,查看这个方法的几种重构方法
然后label的MouseDown事件中((Label)sender).DoDragDrop("Name", DragDropEffects.Move | DragDropEffects.Copy);

#8


引用 7 楼 starfd 的回复:
e.Data.GetData,查看这个方法的几种重构方法
然后label的MouseDown事件中((Label)sender).DoDragDrop("Name", DragDropEffects.Move | DragDropEffects.Copy);



在panel的DragDrop事件中,用下面的代码无法获取到Label对象,请问怎么改下?
 private void label1_MouseDown(object sender, MouseEventArgs e)
        {
            //左键的话(表示拖拽开始)     
            if ((e.Button == System.Windows.Forms.MouseButtons.Left)) 
            {
                label1.DoDragDrop(label1, DragDropEffects.Copy | DragDropEffects.Move); 
                //形成拖拽效果,移动+拷贝的组合效果     
           } 
        }

      private void panel1_DragDrop(object sender, DragEventArgs e)
        {

            object aa = e.Data.GetData("Name"); //取不到label1这个对象,这个地方应该如何改下?

           
        }

#9


e.Data.GetData(typeof(Label))

直接传Label,不知道这样可不可行

#10


Dim a As Label = e.Data.GetData(GetType(Label).FullName, True)

#1


通过label的tag标签

#2


引用 1 楼 starfd 的回复:
通过label的tag标签


能具体点吗?谢谢!

#3


#4


引用 1 楼 starfd 的回复:
通过label的tag标签


关键想知道在Panel控件的拖拽DragDrop事件中,如何通过label的tag标签获取具体是哪个label对象被拖入panel控件中?

#5


其实不用tag,你将label的Name传递过去,然后在DragDrop中通过GetData获取Name,这时候就可以FindControl了

#6


引用 5 楼 starfd 的回复:
其实不用tag,你将label的Name传递过去,然后在DragDrop中通过GetData获取Name,这时候就可以FindControl了

能具体点吗?谢谢!

#7


e.Data.GetData,查看这个方法的几种重构方法
然后label的MouseDown事件中((Label)sender).DoDragDrop("Name", DragDropEffects.Move | DragDropEffects.Copy);

#8


引用 7 楼 starfd 的回复:
e.Data.GetData,查看这个方法的几种重构方法
然后label的MouseDown事件中((Label)sender).DoDragDrop("Name", DragDropEffects.Move | DragDropEffects.Copy);



在panel的DragDrop事件中,用下面的代码无法获取到Label对象,请问怎么改下?
 private void label1_MouseDown(object sender, MouseEventArgs e)
        {
            //左键的话(表示拖拽开始)     
            if ((e.Button == System.Windows.Forms.MouseButtons.Left)) 
            {
                label1.DoDragDrop(label1, DragDropEffects.Copy | DragDropEffects.Move); 
                //形成拖拽效果,移动+拷贝的组合效果     
           } 
        }

      private void panel1_DragDrop(object sender, DragEventArgs e)
        {

            object aa = e.Data.GetData("Name"); //取不到label1这个对象,这个地方应该如何改下?

           
        }

#9


e.Data.GetData(typeof(Label))

直接传Label,不知道这样可不可行

#10


Dim a As Label = e.Data.GetData(GetType(Label).FullName, True)