0

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

4

2 回答 2

1

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

于 2013-03-14T11:00:48.633 回答
0

此代码用于将控件(此处我们为 Button 完成。您可以通过在 DragDrop 事件中将 Button 类更改为任何其他类来使用任何控件)到组框。

首先将 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);
     }
}
于 2014-10-30T08:52:05.133 回答