Я разрабатываю форму, и одно из требований к ней заключается в том, чтобы большинство полей были отключены до тех пор, пока не будут заполнены первые два поля.Для удобства использования я хочу, чтобы он был настроен таким образом, чтобы после того, как вы вышли из второго поля (Field_Two.LostFocus), остальные поля были включены, отображены, и первое из этих полей сфокусировано.Код, который у меня есть в настоящее время, устанавливает видимость всех полей в visibility.hidden при запуске.В настоящее время он выполняет фокус Field_One (следующий в порядке табуляции включенных полей), но я подтвердил, что условия выполнены правильно и выполнение продолжается после оператора return.
Field.beenFocused - это переменнаяЯ создал, что инициализируется как false, а затем устанавливается в true, когда поле фокусируется впервые, мой класс Field расширяет TextBox;все мои элементы управления, кроме Field_One и Field_Two, находятся в панелях стека.
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);
}
}