如何在C#中从datagridview拖放到richtextbox?

时间:2015-03-22 08:53:52

标签: c# forms datagridview drag-and-drop richtextbox

作为标题,我想将1个单元格从datagridview拖到richtextbox?我尝试使用我的代码,但它不起作用。我在构造函数中设置了rtb_ArticleTemplate.AllowDrop = true并且我设置了richtextbox的EnableAutoDragDrop为true

private void rtb_ArticleTemplate_DragEnter(object sender, DragEventArgs e)
{
    string tt = e.Data.GetData(DataFormats.Text).ToString();
    if (e.Data.GetDataPresent(DataFormats.Text))

        e.Effect = DragDropEffects.Copy;
    else
        e.Effect = DragDropEffects.None;
}



private void rtb_ArticleTemplate_DragDrop(object sender, DragEventArgs e)
{
    int i;
    String s;

    // Get start position to drop the text.
    i = rtb_ArticleTemplate.SelectionStart;
    s = rtb_ArticleTemplate.Text.Substring(i);
    rtb_ArticleTemplate.Text = rtb_ArticleTemplate.Text.Substring(0, i);

    // Drop the text on to the RichTextBox.
    rtb_ArticleTemplate.Text = rtb_ArticleTemplate.Text + e.Data.GetData(DataFormats.Text).ToString();
    rtb_ArticleTemplate.Text = rtb_ArticleTemplate.Text + s;
}



private void dgv_Xpath_MouseDown(object sender, MouseEventArgs e)
{
    if (e.Button == MouseButtons.Left)
    {
        DataGridView.HitTestInfo info = dgv_Xpath.HitTest(e.X, e.Y);
        if (info.RowIndex >= 0)
        {
            if (info.RowIndex >= 0 && info.ColumnIndex >= 0)
            {
                string text = (string)
                       dgv_Xpath.Rows[info.RowIndex].Cells[info.ColumnIndex].Value;
                if (text != null)
                    dgv_Xpath.DoDragDrop(text, DragDropEffects.Copy);
            }
        }
    }
}

1 个答案:

答案 0 :(得分:0)

你的妓女错了。如果它返回DragDropEffects.None,它将阻止拖动操作。如果您将代码更改为始终返回copy iso none,您将看到dragoperation将成功。 使用调试器来播放一个小位,看看在拖动过程中输入的数据格式是什么。将鼠标悬停在DragEvents的e上并完全检查其值。这是您需要解决问题的地方。