我正在开发一个表格,其中一个要求是在前两个完成之前禁用大部分字段。为了可用性起见,我希望它设置好,以便在您从第二个字段 (Field_Two.LostFocus) 中跳出后,其余字段将被启用、显示,并且这些字段中的第一个被聚焦。我目前拥有的代码在启动时将所有字段的可见性设置为 visibility.hidden。它目前所做的是关注 Field_One (在启用字段的选项卡顺序中的下一个),但我已经确认条件已正确满足并且执行继续通过 return 语句。
Field.beenFocused 是我创建的一个变量,它被初始化为 false,然后在 Field 第一次获得焦点时设置为 true,我的 Field 类扩展了 TextBox;我所有的控件保存 Field_One 和 Field_Two 都在 Stackpanels 中。
C#
void Field_Two_LostFocus(object sender, RoutedEventArgs e)
{
if (!Field_Three.beenFocused)
{
if (String.IsNullOrWhiteSpace(Field_One.Text) || String.IsNullOrWhiteSpace(Field_Two.Text))
return;
foreach (object u in ApplicationGrid.Children)
if (u.GetType() == typeof(StackPanel))
((StackPanel)u).IsEnabled = true;
do { Field_Three.Focus(); }
while (!Field_Three.beenFocused);
}
}