C # Как зафиксировать TextBox? - PullRequest
       1

C # Как зафиксировать TextBox?

3 голосов
/ 27 декабря 2010

В форме у меня есть TextBox, привязывающий объект к его свойству элемента "Заголовок".Наряду с этим есть кнопка «Сохранить» для проверки привязки.

Похоже, что базовое свойство объекта не обновляется, если текстовое поле не теряет фокус.Но там нет формы. ActiveControl.Blur () для использования.Кроме того, это не похоже на взлом звука.

В любом случае, чтобы сделать это лучше?Спасибо.

РЕДАКТИРОВАТЬ: Извините, что не ясно.Мой вопрос в заголовке: «Как зафиксировать TextBox».Я использую термин «коммит» из коммитов DataGridView и коммитов BindingSource.И это в WinForms.(Никогда не работал с WPF, поэтому мне это не пришло в голову. Извините.)

Фактический сценарий, который у меня есть, - это связка TextBox, привязанная к свойству одного объекта.Пользователь вводит значения во все элементы TextBox, и когда пользователь нажимает кнопку «Сохранить» (кнопка панели инструментов), последний элемент TextBox все еще находится в фокусе (или в режиме редактирования), поэтому при сохранении не будет зафиксировано последнее значение в последнем текстовом поле.

Я хочу найти правильный способ «зафиксировать» значение текстового поля непосредственно перед сохранением.

Спасибо.

Ответы [ 2 ]

2 голосов
/ 29 декабря 2010

Поскольку вопрос был обновлен, чтобы указать, что это WinForms, вам нужно будет обрабатывать вещи немного иначе, чем если бы это было приложение WPF. К счастью, оказывается, что решение очень простое.

Когда пользователь нажимает кнопку «Сохранить» (например, в обработчике событий Click вашей кнопки Сохранить), необходимо вызывать метод EndEdit для BindingSource. Это приведет к тому, что все ожидающие изменения будут зафиксированы в основном источнике данных, именно то, что вы надеялись достичь.

Также см. соответствующую документацию на MSDN для получения более подробной информации.

2 голосов
/ 27 декабря 2010

Похоже на WPF из описания проблемы ..

Вы хотите изменить привязку, чтобы она обновлялась при изменении значения свойства, а не когда текстовое поле теряет фокус (что по умолчанию используется при привязке к TextBox.Текст).Вы можете сделать это, установив свойство UpdateSourceTrigger в привязке:

<TextBox Text="{Binding UpdateSourceTrigger=PropertyChanged}"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...