【发布时间】:2013-03-18 04:18:24
【问题描述】:
我有一个页面,底部有两个文本框、一个复选框和另外两个文本框。
当我单击复选框时,我想将焦点设置到它下面的文本框。 这很好用,软键盘出现,屏幕向上滚动以显示键盘上方的文本框。
但是,如果 TextBox1 或 TextBox2 当前处于焦点状态且键盘已显示,则通过 CheckBox_Click 事件设置焦点将重置屏幕并向下滚动。
我猜这些事件相互冲突 - 文本框失去焦点并隐藏键盘 + 向下滚动屏幕 - TextBox 从外部获得焦点并显示键盘(但不会向上滚动屏幕)
能以某种方式防止这种情况发生吗?
这是 xaml 和代码的简化版本
xaml:
<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();
}
【问题讨论】:
-
嗯,第一件事,你应该注意:你的 CheckBox_click 事件不控制复选框是否已经被选中。而且我看不到,这是怎么发生的:CheckBox_Click 事件将重置屏幕并向下滚动在您的示例中看不到任何滚动。你没有错过什么吗?
标签: windows-phone-7