以编程方式将焦点设置为Windows Phone中的TextBox

在Windows Phone应用程序中,我有一个TextBox和一个Button 。 用户将一些文本写入TextBox并点击Button,TextBox中的文本将添加到列表中。 点击按钮后,TextBox失去焦点。

我想要做的是在点击按钮后将焦点设置回TextBox,这样用户就可以继续编写另一个文本,而无需点击TextBox。

我尝试在Button处理程序中调用TextBox的Focus()方法,但这不起作用。 是否还有另一种方法可以做到这一点?

单击Button时尝试添加bollean flag = true 。 然后在事件OnTextBoxLostFocus上检查此标志。

   public partial class MainPage : PhoneApplicationPage { private bool flag; public MainPage() { InitializeComponent(); } private void Btn_OnClick(object sender, RoutedEventArgs e) { flag = true; tb.Focus(); } private void Tb_OnLostFocus(object sender, RoutedEventArgs e) { if (!flag) return; tb.Focus(); flag = false; } } 

希望它的帮助。

即使我尝试了很多上述解决方案,但它们都没有为我工作,因为我试图专注于页面加载。 最后我得到了这个解决方案并且它有效。

 private void txtBox_LayoutUpdated(object sender, EventArgs e) { txtBox.Focus(); } 

我尝试了很多解决方案,但这是唯一适用于我的解决方案(Windows Phone 8.1应用程序)。 首先捕获TextBox的Loaded事件,然后调用Focus(FocusState.Keyboard)

 private void myTextBox_Loaded(object sender, RoutedEventArgs e) { myTextBox.Focus(FocusState.Keyboard); } 

如果你打电话会怎么样:

 yourTextBox.Select(0,0) 

http://msdn.microsoft.com/en-us/library/system.windows.controls.textbox.select.aspx

你可以通过以编程方式给予焦点来实现这一目标。 这可以通过调用其Focusmethod来完成,尽管在某些条件下此调用可能会失败(并返回false)。 例如,您无法从页面的构造函数设置焦点控件; 太早了。 但是,您可以从页面的Loadedevent中调用它。

如果我想在页面加载时专注于特定的文本框,那么它在手机上最适合我的方式是:

 private void OnPageLoaded(object sender, RoutedEventArgs e) { Dispatcher dispatcher = Deployment.Current.Dispatcher; dispatcher.BeginInvoke(() => EnterLocationTextBox.Focus()); } 

或者如果我只是想在某一点上。 请重复这两行:

 Dispatcher dispatcher = Deployment.Current.Dispatcher; dispatcher.BeginInvoke(() => EnterLocationTextBox.Focus());