Связывание с данными Winforms Textbox - PullRequest
3 голосов
/ 29 марта 2011

В двух словах, эта привязка данных работает правильно

tbTotalTaxDue.DataBindings.Add("Text", I, "TotalTaxDue");

А именно, когда я ввожу недопустимое значение - например, пустую строку - затем выводю из ТБ, значение в нем просто возвращается к предыдущему значению. Это имеет смысл, так как введенное значение не войдет в свойство объекта типа decimal. К сожалению, хотя бы один из этих привязок данных:

tbTotalTaxDue.DataBindings.Add("Text", I, "TotalTaxDue", true, DataSourceUpdateMode.OnPropertyChanged, 0, "C");
tbTotalTaxDue.DataBindings.Add("Text", I, "TotalTaxDue", true, DataSourceUpdateMode.OnValidation, 0, "C");

Поведение по-другому в том, что когда пользователь вводит пустую строку, ввод не будет позволять пользователю вкладку из текстового поля. Есть ли способ заставить привязку данных отображать в виде валюты, но просто отменить любые недействительные изменения?

1 Ответ

3 голосов
/ 29 марта 2011

У вас есть пара вариантов:

  1. Подкласс TextBox и переопределить событие OnValidating. Если Text пусто, выйдите перед вызовом MyBase.OnValidating() для подавления события.

  2. Установите CausesValidation = False на TextBox и обработайте событие TextChanged. Если Text не пусто, проверьте его вручную.

Надеюсь, это поможет.

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