Навигация по полю кодирования при создании безбумажных онлайн-версий бумажных форм с использованием WPF с C # и LinqToXml - PullRequest
0 голосов
/ 28 октября 2010

Используя WPF (с C # и LinqToXml), я воспроизводлю безбумажную версию существующей бумажной формы.Существующая форма содержит несколько текстовых строк по одному символу на блок.Я уже продублировал внешний вид бумажной формы, используя XAML.Как добавить код в односимвольный TextBox для автоматической отправки элемента управления следующему TextBox после его заполнения (не требуя от пользователя перехода к следующему TextBox)?Кроме того, эти последовательности TextBox облегчают ввод значений ключевых полей.Как только последний односимвольный TextBox получает значение с клавиатуры, как я могу закодировать триггер события, чтобы автоматически извлечь соответствующие значения поля записи данных из файла данных Xml?Нужно ли мне включать кнопку в форме или я могу закодировать форму так, чтобы поиск автоматически происходил после заполнения последнего односимвольного TextBox?

1 Ответ

0 голосов
/ 29 октября 2010

Самый лучший способ достичь того, что вы хотите сделать, - это, вероятно, создать класс, представляющий код, который предоставляет цифры через свойства, связанные с текстовыми полями (или как строку через одно свойство, а затем использует ValueConverter для обновления соответствующие цифры) и реализует интерфейс INotifyPropertyChanged (генерируя событие PropertyChanged каждый раз, когда задаются свойство / свойства. Затем можно создать обработчик, который прослушивает события PropertyChanged из объекта кода, проверяет, что все цифры заполнены, и, если поэтому загружает данные из XML, или же вы можете выполнить эту проверку внутри объекта и вызвать другое событие, чтобы приложение знало, что введен полный код.

Что касается перехода к следующему текстовому полю, вы можете создать обработчик событий TextChanged, который вызывает метод UIElement.MoveFocus () и зарегистрировать его во всех текстовых полях, например:

    private void textChanged(object sender, TextChangedEventArgs e)
    {
        TextBox textBox = sender as TextBox;

        if (textBox != null && textBox.Text.Length == 1)
        {
            TraversalRequest tr = new TraversalRequest(FocusNavigationDirection.Next);
            textBox.MoveFocus(tr);
        }
    }

Вы также можете установить для MaxLength каждого текстового поля значение 1, чтобы предотвратить копирование и вставку текста и т. Д., А также можно посмотреть на такие вещи, как ValidationRules, для проверки на недопустимые символы и т. Д.

Надеюсь, это поможет (просто спросите, нужна ли вам помощь в этом).

С уважением, Джеймс

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...