2013-02-26 67 views
0

我正在使用C#在Windows窗体项目中使用groupbox作为容器并向其中添加项(LabelspictureBoxes ...)。我想知道是否可以在此控件上实现拖放事件以使用鼠标移动项目,或者如果必须在添加到我的groupBox的控件中实现此事件。在组盒子中拖拽

+0

检查本教程的http:/ /vicky4147.wordpress.com/2007/02/04/a-simple-drag-drop-in-winforms/ – Zaki 2013-02-26 12:13:20

+0

嗨Sam1,谢谢你的代码示例。我的情况有点不同。我的控件已经在组框中。 – brunoviske 2013-02-26 15:48:45

+0

@brunoviske你可以请添加一些代码你想做什么? – Shrivallabh 2013-02-27 10:09:06

回答

0

这段代码是用来复制一个控件(在这里我们已经完成了Button的操作,你可以通过改变Button类到DragDrop事件中的任何其他类)到一个groupbox。

首先将Groupbox的“AllowDrop”属性设置为true。

groupBox5.AllowDrop=true; 

从属性窗口创建GROUPBOX一个 “dragEnter事件” 事件

private void groupBox5_DragEnter(object sender, DragEventArgs e) 
{ 
    e.Effect = DragDropEffects.Move; 
} 

接下来,从属性窗口创建GROUPBOX一个 “的DragDrop” 事件

private void groupBox5_DragDrop(object sender, DragEventArgs e) 
{ 
    Control c = e.Data.GetData(e.Data.GetFormats()[0]) as Control; 
    // Declare rnd globally for creating random id for dynamic button(eg : Random rnd = new Random();) 
    Button btn = new Button(); 
    btn.Name = "Button" + rnd.Next(); 
    btn.Size = c.Size;    
    btn.Click += new System.EventHandler(DynamicButton_Click); 
    if (c != null) 
    {     
     btn.Text = c.Text; 
     btn.Location = this.groupBox5.PointToClient(new Point(e.X, e.Y)); 
     this.groupBox5.Controls.Add(btn); 
    } 
}