2013-06-26 7 views
0

Я использую маску edit TextBox. В текстовом поле всегда отображается 0 (ноль). Я не могу ввести ключ с клавиатуры. Мне нужно сначала удалить нуль, а затем ввести цифры. Поэтому я делаю дополнительные шаги здесь. Можно ли набирать, как только я набираю клавиатуру? Любое предложение приветствуется.Маска редактировать текстовое поле фокус

private void DateDay_GotFocus(object sender, RoutedEventArgs e) 
{ 
    if (((TextBox)sender).Text == "Day") 
     ((TextBox)sender).Text = string.Empty; 
} 

private void DateDay_LostFocus(object sender, RoutedEventArgs e) 
{ 
    if (((TextBox)sender).Text == string.Empty) 
     ((TextBox)sender).Text = "Day"; 
    else 
     CheckForCorrectDateDay((TextBox)sender); 
} 

Я попытался с событием Фокус, но не увенчались успехом:

enter image description here

ответ

1

Вы должны выбрать все содержимое в текстовом поле в GotFocus случае. Для управления MaskedTextBox он обрабатывает выбор внутри объекта после пожара события фокусировки. Поэтому нам нужно сделать BeginInvoke, чтобы позвонить по телефону SelectAll().

private void DateDay_GotFocus(object sender, RoutedEventArgs e) 
{ 
     this.BeginInvoke((MethodInvoker)delegate() { 
      ((TextBox)sender).SelectAll(); 
     }); 
} 

Таким образом, вы можете начать вводить текст напрямую. Вы не можете сделать текст пустым, если null не разрешен.

WPF версии:

private void TextBox_GotFocus(object sender, RoutedEventArgs e) { 
    this.Dispatcher.BeginInvoke(DispatcherPriority.Normal, (ThreadStart)delegate() { 
     ((TextBox)sender).SelectAll(); 
    }); 
} 
+0

Не working.its нажмите на Textbox ноль не focused.So я не могу печатать. – user2500796

+0

К сожалению, для maskedtextbox он обрабатывает выбор внутри, поэтому вы должны выбрать его с помощью BeginInvoke, который будет срабатывать после того, как произойдет внутренний выбор. Я отредактировал ответ. – arifnpm

+1

эй спасибо, что это работает для меня. Как я упомянул wpf, так просто изменил – user2500796

0

Альтернативное решение для MaskedTextBox с помощью Enter Event

private void maskedEdit_Enter(object sender, EventArgs e) 
    { 
     MaskedTextBox maskedTextBox = (MaskedTextBox)sender; 
     maskedTextBox.BeginInvoke 
     (new Action 
      (() => 
       { 
        maskedTextBox.SelectAll(); 
       } 
      ) 
     );    
    }