c# - 在文本框中单击一次选择点击的单词

标签 c# silverlight windows-phone-7 textbox selection

在 Windows Phone 7 应用程序中。我碰巧有许多 TextBox 堆叠在 ItemsControl 中,并且跨文本框进行选择的行为不统一,即单击任何文本框中的任何单词都不会选择轻敲的话。首先单击一次用于聚焦文本框,然后单击一次以实际选择单词;但是一旦文本框获得焦点,只需单击一下即可选择其中的任何单词,直到用户想要在另一个文本框中选择其他单词。有办法抵消这个吗?可能是通过在 GotFocus 事件中引发假的鼠标左键按下和向上事件?

我所做的是,在 LeftMouseButtonDown(及以上)事件中,我存储了事件参数。在 GotFocus 上,我尝试使用存储的参数引发事件,但用于引发事件的事件处理程序 var 始终为 null,因此引发事件不会发生。我是 C# 的新手,所以我不确定我跑题了。

最佳答案

刚刚发现一个巧妙的技巧!只需轻按一下 TextBox 控件,它就会获得焦点,并且在使用 TextBox 的 SelectionStart 属性的 GotFocus 例程中,可以获取前面有插入符号的当前字符。有了这些数据,就可以找到带有空格字符的左右边界,从而选择单词。

    private void textBox_GotFocus(object sender, RoutedEventArgs e)
    {
        TextBox txtBox = (TextBox)sender;
        char [] strDataAsChars = txtBox.Text.ToCharArray();
        int i = 0;
        for (i = txtBox.SelectionStart - 1; ((i >= 0) &&
                           (strDataAsChars[i] != ' ')); --i) ;
        int selBegin = i + 1;
        for (i = txtBox.SelectionStart; ((i < strDataAsChars.Length) &&
                                          (strDataAsChars[i] != ' ')); ++i) ;
        int selEnd = i;
        txtBox.Select(selBegin, selEnd - selBegin);
    }

张贴在这里,以便以后可以帮助其他人。

关于c# - 在文本框中单击一次选择点击的单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6193027/

相关文章:

c# - .NET 中的隐式链构造函数

C# + WinRT + 用于网络(Azure 移动服务)操作的 Monogame 线程

c# - 在 ScrollViewer Windows Phone 8.0 中将文本换行

windows-phone-7 - 如何使用加速度计发现设备位置变化?

c# - 尝试更改 AppBar 项的 IsEnabled 属性时出现 NullReferenceException 错误

c# - ActiveX 控件在 WPF 应用程序的设计时被禁用

silverlight - 如何为绑定(bind)到 viewmodel 属性的 silverlight 文本 block 提供设计时间值?

ViewModel 中的 Silverlight 异常未在 Application_UnhandledException 中捕获

c# - 使用 Entity Framework 从 WCF RIA 服务调用另一个 WCF 数据服务

c# - 使用 XNA 游戏以试用模式进入 Marketplace