2014-02-16 68 views

回答

2

這裏是裸骨例子,如何我可以從一個文本框選項卡上拖動文本到另一個單獨的選項卡上:

private void textBox1_MouseDown(object sender, MouseEventArgs e) 
{ 
    textBox1.DoDragDrop(textBox1.Text, DragDropEffects.Copy | DragDropEffects.Move); 
} 

private void tabControl1_DragOver(object sender, DragEventArgs e) 
{ 
    Point location = tabControl1.PointToClient(Control.MousePosition); 
    for (int tab = 0; tab < tabControl1.TabCount; ++tab) 
    { 
     if (tabControl1.GetTabRect(tab).Contains(location)) 
     { 
      tabControl1.SelectedIndex = tab; 
      break; 
     } 
    } 
} 

private void textBox2_DragEnter(object sender, DragEventArgs e) 
{ 
    if (e.Data.GetDataPresent(DataFormats.Text)) 
     e.Effect = DragDropEffects.Copy; 
    else 
     e.Effect = DragDropEffects.None; 
} 

private void textBox2_DragDrop(object sender, DragEventArgs e) 
{ 
    textBox2.Text = e.Data.GetData(DataFormats.Text).ToString(); 
} 

注:必須AllowDrop屬性設置爲true上的TabControl,並目的地控制課程。

乾杯

+0

謝謝!非常有幫助 –

+0

@NicolaRusso如果您覺得有幫助,請記住標記爲已接受的答案。乾杯。 –

0

我有我自己(和@mrlucmorin)解決了這個問題:

internal void dgv_MouseDown(object sender, MouseEventArgs e) 
{ 
    DataGridView dgv = (DataGridView)sender; 
    List<DataGridViewRow> result = new List<DataGridViewRow>(); 
    foreach(DataGridViewRow row in dgv.SelectedRows) 
    { 
     result.Add(row); 
    } 
    dgv.DoDragDrop(result, DragDropEffects.Copy | DragDropEffects.Move); 
} 

private void dgv_DragEnter(object sender, DragEventArgs e) 
{ 
    e.Effect = DragDropEffects.Copy; 
} 

private void dgv_DragDrop(object sender, DragEventArgs e) 
{ 
    try 
    { 
      DataGridView dataGridView1 = (DataGridView)sender; 
      List<DataGridViewRow> rows = new List<DataGridViewRow>(); 
      rows = (List<DataGridViewRow>)e.Data.GetData(rows.GetType()); 

      //some stuff 
    } 
}