C# winform 如何实现将Label控件的文本内容拖动到任意的Panel控件中。
问题描述:
在C# winform中,有一个form窗体,在form窗体中包函四个Panel控件(panel1、panel2、panel3、panel4)以及三个Label控件(label1、label2、label3)。
目前需要实现如下拖动效果:
1、要求将label1控件的text文本内容,手动拖动到任意一个Panel控件中居中显示label1控件text文本内容。
2、并且要求将拖动到Panel控件中的text文本内容再复制一份到label1控件中,且将text文本内容颜色设置成灰色显示。
3、其它label2、label3要求同样实现上述1、2的拖动效果。
请各位帮忙看看,有没有相关的源码或参考资料,谢谢!
答
按照上面的参考将form改成panel,无法实现将label拖动到panel,且生成副本,帮忙看看。谢谢!
private int count = 1;
public Form8()
{
InitializeComponent();
}
private void Form8_Load(object sender, EventArgs e)
{
panel1.AllowDrop = true;
//panel自身支持接受拖拽来的控件
}
private void label1_MouseDown(object sender, MouseEventArgs e)
{
//左键的话,标志位为true(表示拖拽开始)
if ((e.Button == System.Windows.Forms.MouseButtons.Left))
{
label1.DoDragDrop(label1, DragDropEffects.Copy | DragDropEffects.Move);
//形成拖拽效果,移动+拷贝的组合效果
}
}
private void panel1_DragEnter(object sender, DragEventArgs e)
{
//当Label被拖拽到WinForm上时候,鼠标效果出现
if ((e.Data.GetDataPresent(typeof(Label))))
{
e.Effect = DragDropEffects.Copy;
}
}
private void panel1_DragDrop(object sender, DragEventArgs e)
{
//拖放完毕之后,自动生成新控件
Label btn = new Label();
btn.Size = label1.Size;
btn.Location = this.PointToClient(new Point(e.X, e.Y));
//用这个方法计算出客户端容器界面的X,Y坐标。否则直接使用X,Y是屏幕坐标
this.Controls.Add(btn);
btn.Text = "按钮" + count.ToString();
count = count + 1;
}