我有一个页面,底部有两个文本框、一个复选框和另外两个文本框。
当我单击复选框时,我想将焦点设置到它下面的文本框。这很好用,软键盘出现,屏幕向上滚动以显示键盘上方的文本框。
但是,如果 TextBox1 或 TextBox2 当前处于焦点状态并且键盘已经显示,则从 CheckBox_Click 事件设置焦点将重置屏幕并向下滚动。
我猜这些事件相互冲突 - TextBox 失去焦点并隐藏键盘 + 向下滚动屏幕 - TextBox 从外部获得焦点并显示键盘(但不会向上滚动屏幕)
可以以某种方式防止这种情况吗?
这是xaml和代码的简化版本
xml:
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<StackPanel Margin="0,100,0,0">
<TextBox x:Name="TextBox1" />
<TextBox x:Name="TextBox2" />
<CheckBox Content="Click Me" Click="CheckBox_Click" />
<TextBox x:Name="TextBox3" />
<TextBox x:Name="TextBox4" />
</StackPanel>
</Grid>
背后的代码:
private void CheckBox_Click(object sender, RoutedEventArgs e)
{
TextBox3.Focus();
}