首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >拖放: DataGridView行“TabPage”

拖放: DataGridView行“TabPage”
EN

Stack Overflow用户
提问于 2014-02-16 18:23:36
回答 2查看 400关注 0票数 0

解决了,我想把一些DataGridViewRows从DataGridView (包含在TabPage中)拖到另一个DataGridView (也包含在另一个TabPage中)。我已经设置了DataGridView的事件(How could I Drag and Drop DataGridView Rows under each other?),但是我不知道如何在TabPages之间“导航”!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-02-16 20:28:54

下面是一个简单的示例,可以将文本从标签上的一个文本框拖到另一个单独的选项卡上:

代码语言:javascript
复制
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上将TabControl属性设置为true,当然在目标控件上也是如此。

干杯

票数 2
EN

Stack Overflow用户

发布于 2014-02-17 15:02:41

我自己解决了这个问题( @mrlucmorin):

代码语言:javascript
复制
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
     }
 }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21815480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档