我将 AllowDrop
设置为 true
实现了 DragOver
和 DragDrop
事件 RichTextBox。在 DragDrop
事件中,我将拖放的文本文件的内容加载到 RTB 上,但它确实在 RTB 中添加了文件的图标,我想将其删除:
编辑:这是我的代码:
void msg_setup_dragDrop()
{
msg_textBox.AllowDrop = true;
msg_textBox.EnableAutoDragDrop = true; msg_textBox.DragEnter += new DragEventHandler(msg_DragEnter); msg_textBox.DragDrop += new DragEventHandler(msg_DragDrop);
void msg_DragEnter(object sender, DragEventArgs e)
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
e.Effect = DragDropEffects.Copy;
}
void msg_DragDrop(object sender, DragEventArgs e)
{
string[] files = (string[]) e.Data.GetData(DataFormats.FileDrop);
StringBuilder buffer = new StringBuilder();
foreach (string filename in files)
{
try
{
string text = File.ReadAllText(filename);
buffer.Append(text);
}
catch (Exception ex)
{
string errMsg = string.Format("cannot read the file\"{0}\" error: {1}", filename, ex.Message);
MessageBox.Show(errMsg, "Reading file error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
}
msg_textBox.Text = buffer.ToString();
}
最佳答案
你在某处设置了msg_textBox.EnableAutoDragDrop = true
,在您的设计器窗口或您的代码中。您需要将其设置为 false。您仍然需要设置 AllowDrop = true
.
当设置为 true 时,winforms RichTextBox
为拖放事件提供标准行为,您的自定义处理程序将添加。如果您不想要标准行为,则必须完全推出自己的处理程序。 (放置文本文件的标准行为是嵌入 OLE。如果双击该图标,记事本将启动。)
关于c# - 通过在 RichTextBox 上放置文件自动删除图标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29380312/