Silverlight Textbox,移动商标位置
-
22-09-2019 - |
题
我正在尝试为屏幕上的键盘制作文本框行为,它可以在文本框中更新文本,但是我无法将其集中在文本框中,并在更新文本后将其移至文本末尾。
我尝试在两个订单中使用TextBox.focus()和TextBox.Select(),没有运气。
谢谢你的时间
解决方案
将焦点从输入事件处理程序内部更改(即鼠标单击虚拟键)将失败,因为鼠标上的事件(或键 - UP)将返回焦点为原始元素。为了使其正常工作,您必须使用该命令将焦点命令派遣到以后的时间 Dispatcher
目的。
例子:
Dispatcher.Invoke(new Action(() =>
{
textBox1.Focus();
textBox1.SelectionStart = textBox1.Text.Length;
// or textBox1.Select(textBox1.Text.Length,0);
}), System.Windows.Threading.DispatcherPriority.Background);
其他提示
这是一个简单的示例,即将光标更新后,将光标移至文本框的末尾。
TextBox.Focus();
TextBox.Text = "sometext ";
TextBox.SelectionStart = TextBox.Text.Length;
我也有类似的情况,如下所示,我将“文本变换”处理程序附加到文本框上。
<TextBox Name="tbTextEntry" Width="200" HorizontalAlignment="Center" Background="Plum" Text="{Binding Entered_text,Mode=TwoWay}" TextChanged="OnTextChanged_Handler"></TextBox>
并处理这样的活动(感谢上面评论的Jeff Beck):
protected void OnTextChanged_Handler(object sender, RoutedEventArgs e)
{
TextBox my_text_box = (TextBox)sender;
my_text_box.SelectionStart = my_text_box.Text.Length;
Debug.WriteLine("OnTextChanged_Handler called !");
return;
}
对于一个人离开屏幕键盘并开始使用真实键盘的情况,这是效率低下的,因为每个新字符都会导致该处理程序被不必要地调用,因为光标可以使用真实的键盘工作。欢迎任何更有效的解决方案!
希望有帮助。谢谢。
不隶属于 StackOverflow