2016-03-25 2 views
2

Я новичок в C#. Я пытаюсь сделать приложение Windows 10, в котором у меня есть текстовое поле, которое принимает только числа и одну десятичную. Я видел, как многие люди говорили, что используют обработчик событий KeyPress, но у меня этого нет. У меня есть только KeyDown и KeyUp. Я видел, кто-то пост, используя следующий код с KeyDown:Я не могу найти обработчик событий KeyPress в C#

private void textBox1_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.Key < Key.D0 || e.Key > Key.D9) 
    { 
     e.Handled = true; 
    } 
} 

, но даже для этого я получаю ошибку «Ключ не существует в текущем контексте» для Key.D0 и Key.D9. Я нахожусь в полной потере, если кто-то может помочь, это будет здорово.

+0

WinForm или WPF? –

+0

Это должно быть 'Keys.D0' и' Keys.D9' – NineBerry

+0

Когда вы говорите о приложении Windows 10, вы имеете в виду, что хотите написать «Универсальное приложение», как его называют? – NineBerry

ответ

2

Предполагая, что под «Windows 10 приложения» вы имеете в виду «Универсальное приложение», вы можете использовать следующий код в метод с именем TextBox_KeyDown, что вы общаетесь с KeyDown случае вашего TextBox.

private void TextBox_KeyDown(object sender, KeyRoutedEventArgs e) 
{ 
    if(e.Key < Windows.System.VirtualKey.Number0 || e.Key >= Windows.System.VirtualKey.Number9) 
    { 
     e.Handled = true; 
    } 
} 
+0

Большое спасибо – Zink

+0

еще один вопрос, как бы я получил его, чтобы в текстовом поле не было больше одной десятичной точки? – Zink

+0

Когда ключ является десятичной точкой, проверьте, содержится ли он в TextBox, и соответственно установите Обработать. – NineBerry

0

Предполагая, что это является WinForm приложение, обратитесь к следующим Control.KeyPress Event образцу на MSDN (Re: https://msdn.microsoft.com/en-us/library/system.windows.forms.control.keypress(v=vs.110).aspx)

// This event occurs after the KeyDown event and can be used to prevent 
// characters from entering the control. 
private void textBox1_KeyPress(object sender, System.Windows.Forms.KeyPressEventArgs e) 
{ 
    // Check for the condition 
    if (SOME CONDITION) 
    { 
     // Stop the character from being entered into the control. 
     e.Handled = true; 
    } 
} 

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

0

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

public YourFormName() 
    { 
     InitializeComponent(); 

     this.KeyPress -= YourFormName_KeyPress; 
     this.KeyPress += YourFormName_KeyPress; 
    } 

    private void YourFormName_KeyPress(object sender, KeyPressEventArgs e) 
    { 
     //Check for any key you want. 
     if (e.KeyChar == (char)Keys.Enter) 
     { 
      //do anything. 
     } 
    } 
Смежные вопросы