如何在 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 上并完全检查其值。这是您需要解决问题的地方。
作为标题,我想将 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 上并完全检查其值。这是您需要解决问题的地方。