如何在WPF中单击按钮时激活按键?

时间:2016-05-24 08:01:10

标签: wpf events keydown

我在WPF应用程序中有一个按钮和文本框。 Textbox有一个字符串“Hello you guy”,开头是插入符号(在 Hello 之前)。当用户单击该按钮时,我希望我的应用程序使用Control + Right激活KeyDown事件,因此我的文本框中的插入符号移到之前。当用户再次单击该按钮时,插入符号移到 guy 之前。

我该怎么做?

2 个答案:

答案 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;