我正在做我的第一个拖放应用程序。我有一个工具箱,您可以在其中找到与Visual Studio完全相同的标签,按钮和其他组件。我在中间有小组。我希望用户将按钮拖放到面板。我写了一些代码,但没有做拖放技巧。
这是屏幕截图
这是我的代码,应该处理拖放
private void listBox1_MouseDown(object sender, MouseEventArgs e)
{
ListBox box = (ListBox)sender;
String selectedValue = box.Text;
DoDragDrop(selectedValue.ToString(), DragDropEffects.Copy);
}
private void pnl_form_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.Text))
{
e.Effect = DragDropEffects.Copy;
}
else
{
e.Effect = DragDropEffects.None;
}
}
private void pnl_form_DragDrop(object sender, DragEventArgs e)
{
Label newLabel = new Label();
newLabel.Name = "testLabel";
newLabel.Text = e.Data.GetData(DataFormats.Text).ToString();
newLabel.AutoSize = true;
newLabel.Parent = pnl_form;
}
我做错了吗?
答案 0 :(得分:1)
请记住在要删除内容的控件上设置AllowDrop = true
。
private void listBox1_MouseDown(object sender, MouseEventArgs e)
{
String selectedValue = (listBox1.SelectedItem ?? "NULL").ToString();
DoDragDrop(selectedValue, DragDropEffects.Copy);
}