c# - 通过在 RichTextBox 上放置文件自动删除图标

标签 c# winforms drag-and-drop richtextbox

我将 AllowDrop 设置为 true 实现了 DragOverDragDrop 事件 RichTextBox。在 DragDrop 事件中,我将拖放的文本文件的内容加载到 RTB 上,但它确实在 RTB 中添加了文件的图标,我想将其删除:

enter image description here

编辑:这是我的代码:

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/

相关文章:

javascript - 下降不起作用?

c# - C# 中的线程 Sql 查询

c# - 将ReadProcessMemory输出转换为字符串

c# - LINQ to Entities 无法识别该方法

c# - 为什么 .NET Core DI 更喜欢接受 IEnumerable<T> 的构造函数而不是无参数构造函数?

vb.net - VB.Net如何让窗体出现在Windows 10的所有桌面?

c# - Winforms:一个可拖动的透明矩形

javascript - 从 JQGrid 拖动到 jsTree v.0.9.9a

browser - 如何为 SWT 浏览器小部件实现放置目标

c# - 多层 WinForm App 中的错误处理