在 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/