2016-08-02 2 views
-1

У меня есть MaskedTextBox, что форматирует текст выглядеть (###) ### - ####MaskedTextBox обнаружения вкладки

После ввода первых 3 цифры, они любят нажимать «TAB» к следующему набору. К сожалению, нажав TAB, они находятся в следующем поле.

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

private void maskedTextBoxHomePhone_KeyPress(object sender, KeyPressEventArgs e) 
    { 
     MaskedTextBox mtb = (MaskedTextBox)sender; 
     if (e.KeyChar == (char)Keys.Tab) 
     { 
      if (mtb.TextLength == 3) 
      { 
       mtb.SelectionStart = 4; 
      } 
     } 
    } 

Я также попытался

private void maskedTextBoxHomePhone_KeyDown(object sender, KeyEventArgs e) 
    { 
     MaskedTextBox mtb = (MaskedTextBox)sender; 
     if (e.KeyCode == Keys.Tab) 
     { 
      if (mtb.TextLength == 3) 
      { 
       mtb.SelectionStart = 4; 
      } 
     } 
    } 

ответ

0

Вкладка имеет особое значение, которое заставит фокус изменится, так что обработчик события не будет вызван.

Вы можете обойти это, используя событие Leave текстового поля и подсчет textlength, сохраняемый в некоторых локальных переменном:

private void maskedTextBoxHomePhone_Leave(object sender, EventArgs e) 
{ 
    if (_mtbTextLength == 3) { //change selection start and goes back to masked text box } 
} 

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

Другим вариантом был бы изменить поведение Tab переопределения ProcessCmdKey:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
{ 
    if (keyData == Keys.Tab) 
    { 
     //Do something 
    } 
} 
+0

, когда я использую ProcessCmdKey, она не позволяет какой-либо из других символов в поле –

+0

то, возможно, вы должны попробовать первый вариант, который я дал ... если TextLength == 3, вы должны вернуть фокус в замаскированное текстовое поле и установить начало выбора на 4. – Forlani

Смежные вопросы