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

how to drag and drop from datagridview to richtextbox in C#?

作为标题,我想将 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);
            }
        }
    }
}

你的dragenter错了。如果是returns DragDropEffects.None,就会阻塞拖动操作。如果您将代码更改为始终 return copy iso none,您将看到拖动操作会成功。 使用调试器稍微玩一下,看看在拖动过程中输入的数据是什么格式。将鼠标悬停在 DragEvents 的 e 上并完全检查其值。这是您需要解决问题的地方。