2016-03-25 31 views
2

Ben C# 'da yeniyim. Ben sadece sayıları ve bir ondalık kabul eden bir metin kutusu olan bir windows 10 uygulaması yapmaya çalışıyorum. Burada KeyPress olay işleyicisini kullanmak için birçok insan gördüm, ama bende yok. Sadece KeyDown ve KeyUp var.KeyPress olay işleyicisini bulamıyorum C#

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

ama hata alıyorum hatta bunun için Key.D0 ve Key.D9 için "Anahtar geçerli bağlamda yok": Ben KeyDown ile aşağıdaki kodu kullanarak birisi görmüşse. Birileri bunun harika olacağını düşünürse tam bir kayıptayım. Bu yardımcı olabilir

// 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; 
    } 
} 

Hope:

+0

WinForm veya WPF? –

+0

'Keys.D0' ve' Keys.D9' – NineBerry

+0

olmalıdır. Windows 10 uygulaması derken, bir "Evrensel Uygulama" yazmak istediğiniz anlamına mı geliyor? – NineBerry

cevap

2

bir "Evrensel Uygulama", size TextBox KeyDown olayla ilişkilendirmek TextBox_KeyDown adında bir yöntemde aşağıdaki kodu kullanabilirsiniz anlamına gelir.

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

teşekkür ederim sooo çok fazla – Zink

+0

sadece bir soru daha, daha sonra metin kutusunda bir ondalık noktaya sahip değil olsun? – Zink

+0

Anahtar ondalık basamak olduğunda, TextBox'ta önceden bulunup bulunmadığını kontrol edin ve Elle İşle seçeneğini ayarlayın. – NineBerry

0

Bu olayı elle oluşturmak için özel bir kod kullanabilirsiniz. Umarım bu fikri alırsın. "Windows 10 app" tarafından varsayarsak

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. 
     } 
    } 
İlgili konular