拖放组合框项目

时间:2013-02-26 12:11:08

标签: c# winforms groupbox

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

2 个答案:

答案 0 :(得分:1)

在对我的主题进行一些研究之后,我在我的一位朋友的帮助下找到了解决方案。要执行此任务,我们需要使用一些变量,属性和三个鼠标事件来分配给对象:MouseMove,MouseUp和MouseDown。我最近也找到了一个例子:http://social.msdn.microsoft.com/Forums/en-US/winforms/thread/6eb864ff-0ea8-4641-bc2a-83db94371429

答案 1 :(得分:0)

此代码用于复制控件(这里我们已经为Button完成了。您可以通过将Button类更改为DragDrop事件中的任何其他类来使用任何控件)到组框。

首先将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);
     }
}