2013-03-11 1 views
1

У меня есть TextBox. После выхода из текстового поля первый символ должен быть заглавной буквой. Три события работают одинаково. Они являются «Отпуск», «Проверка и проверка».События TextBox в C#

if (txtLocl.Text.Length > 0) 
    txtLocl.Text = txtLocl.Text.Substring(0, 1).ToUpper() + txtLocl.Text.Substring(1); 

Какое событие этих трех событий следует использовать?

+0

Лучше вы можете пойти с пользовательским контролем .......... – andy

+0

Прочтите это: [MSDN] (http://msdn.microsoft.com/en-us/library/system.windows.forms.control.leave.aspx), он может содержать ответ на ваш вопрос. – Nolonar

ответ

2

Вы можете подписаться на событие Control.Leave, которое будет запущено, когда управление теряет фокус. Первоначально я думал, что использование Control.LostFocus будет самым подходящим событием для использования, но оно не доступно через конструктора, поскольку вам нужно будет вручную подписаться на мероприятие, которое, на мой взгляд, немного уродливое и нетрадиционное.

private void inputTextBox_Leave(object sender, EventArgs e) 
{ 
    if (inputTextBox.Text != string.Empty) 
    { 
     string input = inputTextBox.Text; 
     inputTextBox.Text = input.First().ToString(CultureInfo.InvariantCulture).ToUpper() + 
          string.Join(string.Empty, input.Skip(1)); 
    } 
} 

Вы походите вы заинтересованы в Control.Validating. Преимущество использования Control.Validating заключается в том, что вы можете использовать обработчик событий, заданный аргументом; CancelEventArgs и установите для свойства Cancel значение true. То, что это будет делать, это остановить управление от потери фокуса и заставить пользователя ввести действительное значение. Я не думаю, что это подходит для вашего приложения, поскольку вы на самом деле не проверяете ничего, кроме форматирования ввода.

private void inputTextBox_Validating(object sender, CancelEventArgs e) 
{ 
    if (inputTextBox.Text == string.Empty) 
    { 
     statusLabel.Text = "The given input is not valid."; 
     e.Cancel = true; 
    } 
} 

Голые в виду, что, когда форма закрывается, все элементы управления к югу последовательно теряют фокус и Control.Validating событие обжигали, который может остановить закрытие формы, пока все поля не проходят их относительные проверки достоверности. Если вам нужно избегать такого поведения, победит быстрый поиск.

0

Возможно, вы захотите подписаться на событие LostKeyboardFocus (в WPF) или оставить событие (в WF).

+0

И из какой версии jQuery? –

+0

Мне жаль? Разве это не вопрос .Net? Оо –

0

Я бы предложил использовать Оставлю, потому что я предполагаю, что вы не проверяете значение, а форматируете его. Validating and Validated должен содержать код для проверки и последующие проверки, IMO.

1

Есть много других событий, которые также доступны.

По словам MSDN, при изменении фокуса с помощью клавиатуры (TAB, SHIFT + TAB, и так далее), путем вызова Выберите или SelectNextControl методы, или установив свойство ContainerControl.ActiveControl к текущей форме , фокус события происходят в следующем порядке:

1) Enter 

2) GotFocus 

3) Leave 

4) Validating 

5) Validated 

6) LostFocus 

при изменении фокуса с помощью мыши или с помощью вызова метода фокус, фокус события происходят в следующем порядке:

1) Enter 

2) GotFocus 

3) LostFocus 

4) Leave 

5) Validating 

6) Validated 

Если CausesValidation свойство i s установлено значение false, события Validating and Validated подавляются.