在 Windows Phone 应用程序中,我有一个TextBox
和一个Button
. 用户将一些文本写入 TextBox 并点击 Button,TextBox 中的文本将添加到列表中。点击 Button 后,TextBox 失去焦点。
我想要做的是在点击按钮后将焦点设置回文本框,以便用户可以继续编写另一个文本而无需点击文本框。
我尝试Focus()
在 Button 处理程序中调用 TextBox 的方法,但这不起作用。如果有的话,还有其他方法吗?
在 Windows Phone 应用程序中,我有一个TextBox
和一个Button
. 用户将一些文本写入 TextBox 并点击 Button,TextBox 中的文本将添加到列表中。点击 Button 后,TextBox 失去焦点。
我想要做的是在点击按钮后将焦点设置回文本框,以便用户可以继续编写另一个文本而无需点击文本框。
我尝试Focus()
在 Button 处理程序中调用 TextBox 的方法,但这不起作用。如果有的话,还有其他方法吗?
单击按钮时尝试添加bollean flag = true
. 然后在 event 上检查这个标志OnTextBoxLostFocus
。
<TextBox x:Name="tb" Grid.Row="1" LostFocus="Tb_OnLostFocus"/>
<Button x:Name="btn" Click="Btn_OnClick" />
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;
}
}
希望它的帮助。
我尝试了很多解决方案,但这是唯一适合我的解决方案(Windows Phone 8.1 应用程序)。首先捕获您的 TextBox 的Loaded
事件,然后调用Focus(FocusState.Keyboard)
.
private void myTextBox_Loaded(object sender, RoutedEventArgs e)
{
myTextBox.Focus(FocusState.Keyboard);
}
即使我尝试了很多上述解决方案,但没有一个对我有用,因为我试图专注于页面加载。最后我得到了这个解决方案并且它有效。
private void txtBox_LayoutUpdated(object sender, EventArgs e)
{
txtBox.Focus();
}
如果你打电话会发生什么:
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());