我设置为true,AllowDrop实现了DragOver和DragDrop事件RichTextBox.在DragDrop事件中,我将放置的文本文件的内容加载到实时出价工具中,但确实在实时出价工具中添加了文件图标,我想将其删除:
编辑:这是我的代码:
void msg_setup_dragDrop()
{
msg_textBox.AllowDrop = true;
msg_textBox.EnableAutoDragDrop = true;
msg_textBox.DragEnter =新的DragEventHandler(msg_DragEnter);
msg_textBox.DragDrop =新的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嵌入.如果双击该图标,则会启动记事本.)