2013-08-01 89 views
0

我正在做我的第一次拖動&拖放應用程序。我有一個工具箱,您可以在其中找到與Visual Studio完全相同的標籤,按鈕和其他組件。我有中間的小組。我希望用戶將一個按鈕拖放到面板上。我寫了一些代碼,但沒有做拖放技巧。從列表框拖放到面板

這裏是截圖enter image description here

這裏是我的代碼應該處理拖入&下降

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; 
    } 

難道我做錯了什麼?

回答

1

記得在要控制的東西上放置AllowDrop = true

private void listBox1_MouseDown(object sender, MouseEventArgs e) 
{   
    String selectedValue = (listBox1.SelectedItem ?? "NULL").ToString(); 
    DoDragDrop(selectedValue, DragDropEffects.Copy); 
} 
+0

selectedValue獲取所選對象的正確名稱。可以說你選擇一個單選按鈕,selectedValue被設置爲「Radiobutton」 –

+0

@ayilmaz你想從列表框拖動什麼?你的代碼只是獲得你的ListBox的'Text',它是空的。 –

+0

它不是空的。現在,我只想從工具箱中選擇按鈕對象,並獲取它的名稱,即「Button」。然後創建一個標籤並將其文本設置爲「Button」並將其放到面板中。現在我正在嘗試最簡單的事情。但selectedValue得到完美的名稱 –