【问题标题】:WPF textbox and doubleclickWPF 文本框并双击
【发布时间】:2009-12-04 03:56:09
【问题描述】:

我在 WPF 应用程序中显示 Mac 地址。 我希望那个mac地址可以选择复制/粘贴,所以我使用ReadOnly TextBox

当用户双击我想选择整个 MacAddress

WPF 和 Windows 的默认行为是通过双击选择冒号之间的数字部分 所以当mac地址是:00:55:66:77:99

然后用户双击,只选择了mac地址的一部分(比如55) 有没有办法不用代码来选择文本框的全部内容

或者我不应该使用文本框?

谢谢

【问题讨论】:

    标签: wpf textbox double-click


    【解决方案1】:

    在文本框的 MouseDoubleClick 事件中,您可以调用文本框的 SelectAll() 方法来选择其中的所有文本。

    void textBox_MouseDoubleClick(object sender, MouseButtonEventArgs e)
    {
        (sender as TextBox).SelectAll();
    }
    

    【讨论】:

      【解决方案2】:

      不幸的是,我认为没有办法直接在 TextBox 中执行此操作。

      话虽如此,通过Attached Property 或表达式行为(我的偏好)将此行为添加到文本框中将是微不足道的。只需注意选择更改,如果有任何选择,请选择所有内容。然后您可以在其他地方轻松地重用它,而无需将代码添加到您的代码隐藏文件中。您仍在添加代码,但不是在实际的 UserControl 或 Window 类中,而是在将插入到 xaml 中的可重用组件中。

      【讨论】:

        【解决方案3】:

        你不能只处理 MouseDoubleClick 事件吗?否则,如果您想始终防止部分选择,您可以处理 SelectionChanged 事件。无论哪种情况,您都可以使用 SelectAll 方法。

        没关系,我重新阅读并看到您想要一个非代码解决方案。不幸的是,我不知道。

        【讨论】:

          【解决方案4】:

          我喜欢行为的想法,但我不得不重新分配一些与 Blend 相关的程序集,而且我还不了解 Blend。 所以我最终创建了一种新类型的文本框,它继承自文本框,并且在鼠标双击时执行 selectAll

          感谢大家的回答

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-12-28
            • 1970-01-01
            • 2011-02-02
            • 2011-03-23
            • 2020-10-23
            • 1970-01-01
            相关资源
            最近更新 更多