【问题标题】:WPF - How to disable drag and drop WITHIN a textbox control?WPF - 如何在文本框控件中禁用拖放?
【发布时间】:2016-10-07 22:35:46
【问题描述】:

如果您查看文本框在 Windows 资源管理器中的显示方式 - 如果您重命名文件,它会突出显示整个文本。但是,如果您拖动以选择文本,它将更改选择以适应用户的拖动。

在 WPF 中,如果你选择了一个文本框的所有文本,然后在文本区域中拖动来选择文本,它会尝试将文本拖放到文本框区域内。我想知道 WPF 中是否有办法禁用此功能,让它更像 Windows 资源管理器?

之所以需要它,主要是因为当人们重命名事物时,他们要么想要重命名整个事物(激活重命名后退格,因为所有文本都被突出显示)或部分内容(用户拖动以突出显示某些文本。)Windows Explorer 结合了两者而且效果很好,我需要在 WPF 中复制该功能。

【问题讨论】:

    标签: c# wpf textbox drag-and-drop highlight


    【解决方案1】:

    你可以使用DataObject.AddCopyingHandler

    DataObject.AddCopyingHandler(textbox, (s, e) =>
    {
        if (e.IsDragDrop) e.CancelCommand();
    });
    

    编辑:

    当拖动选择文本时,它不会将光标位置设置为选择的开头,它只是使用文本框中文本的开头

    您可以在实际选择之前删除当前选择:

    textbox.PreviewMouseLeftButtonDown += (s, e) =>
    {
        textbox.Select(0, 0);
    };
    

    【讨论】:

    • 这可行,但是当拖动以选择文本时,它不会将光标位置设置为选择的开头,它只是使用文本框中文本的开头。知道如何解决吗?
    • 谢谢,我用插入符号索引和鼠标点做了复杂的事情,但这要简单得多。很好的答案!
    • 太棒了!救命稻草!
    猜你喜欢
    • 1970-01-01
    • 2014-06-22
    • 2011-05-15
    • 2011-05-24
    • 2010-12-17
    • 1970-01-01
    • 2018-12-03
    • 1970-01-01
    相关资源
    最近更新 更多