Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/288.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在文本框中单击一次即可选择点击的单词_C#_Silverlight_Windows Phone 7_Textbox_Selection - Fatal编程技术网

C# 在文本框中单击一次即可选择点击的单词

C# 在文本框中单击一次即可选择点击的单词,c#,silverlight,windows-phone-7,textbox,selection,C#,Silverlight,Windows Phone 7,Textbox,Selection,在WindowsPhone7应用程序中。我碰巧有许多TextBoxs堆叠在ItemsControl中,并且在文本框之间进行选择的行为并不一致,即单击任何文本框中的任何单词都不会选择点击的单词。首先点击文本框聚焦,然后点击另一个来实际选择单词;但一旦文本框有了焦点,只需单击即可选择其中的任何单词,直到用户想要在另一个文本框中选择其他单词为止。有没有办法解决这个问题?可能是通过在GotFocus事件上向下和向上移动假鼠标左键来实现的 我所做的是,在LeftMouseButtonDown(和up)事件

在WindowsPhone7应用程序中。我碰巧有许多
TextBox
s堆叠在
ItemsControl
中,并且在文本框之间进行选择的行为并不一致,即单击任何文本框中的任何单词都不会选择点击的单词。首先点击文本框聚焦,然后点击另一个来实际选择单词;但一旦文本框有了焦点,只需单击即可选择其中的任何单词,直到用户想要在另一个文本框中选择其他单词为止。有没有办法解决这个问题?可能是通过在GotFocus事件上向下和向上移动假鼠标左键来实现的


我所做的是,在LeftMouseButtonDown(和up)事件中,我存储了事件参数。在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);
    }
private void textBox\u GotFocus(对象发送方、路由目标方)
{
TextBox txtBox=(TextBox)发送方;
char[]strDataAsChars=txtBox.Text.tocharray();
int i=0;
对于(i=txtBox.SelectionStart-1;((i>=0)&&
(strDataAsChars[i]!=”);--i);
int selbeng=i+1;
用于(i=txtBox.SelectionStart;((i

将其张贴在此处,以便以后可以帮助他人。

在事件中,您可以设置e.Cancel=true,然后将文本框设置为选中状态。你试过这个吗?