我正在使用 C# 开发一个 Windows 窗体项目,在该项目中我使用 agroupbox
作为容器并向其中添加项目(Labels
,pictureBoxes
...)。我想知道是否可以在此控件上实现拖放事件以使用鼠标移动项目,或者是否必须在添加到我的groupBox
.
问问题
3740 次
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 回答