我在WPF应用程序中有一个按钮和文本框。 Textbox有一个字符串“Hello you guy”,开头是插入符号(在 Hello 之前)。当用户单击该按钮时,我希望我的应用程序使用Control + Right激活KeyDown事件,因此我的文本框中的插入符号移到你之前。当用户再次单击该按钮时,插入符号移到 guy 之前。
我该怎么做?
答案 0 :(得分:1)
您可以使用TextBox的CaretIndex属性设置插入位置。请记住,这不是DependencyProperty。不过,你仍然可以像这样在XAML中设置它:
<TextBox Text="123" CaretIndex="{x:Static System:Int32.MaxValue}" />
请记住在Text属性后设置CaretIndex,否则它将无效。因此,如果绑定到Text,它可能不会起作用。您也可以像这样简单地使用代码隐藏。
txtbox.CaretIndex = 12;
试试这个!
var text = this.textbox.Text.SubString(this.textbox.CaretIndex);
int newIndex = text.IndexOf(" ") + 1;
if (newIndex > 0)
this.textbox.CaretIndex = newIndex;
答案 1 :(得分:0)
首先,通常当您按下按钮时,焦点将从其他控件中移除,并被赋予按钮。这也是正常的预期行为。当然,这可以通过代码进行更改,但您应该有充分的理由违反此约定。
其次,从按钮的Click
事件直接操作该文本框可能更容易。
// Inside Click event for the button
this.textbox.Focus(); // Make sure textbox gets back focus
var text = this.textbox.Text.SubString(this.textbox.CaretIndex);
int newIndex = text.IndexOf(" ") + 1;
if (newIndex > 0)
this.textbox.CaretIndex = newIndex;