2016-03-25 104 views
2

我是c#的新手。我試圖做一個Windows 10應用程序,其中我有一個文本框,只接受數字和一位小數。我看到很多人在這裏說使用KeyPress事件處理程序,但我沒有。我只有KeyDown和KeyUp。我無法在c#中找到KeyPress事件處理程序#

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

但即使是爲了這個,我得到錯誤的Key.D0和Key.D9「鍵並不在當前的背景下存在」:我用下面的代碼用的KeyDown看到有人交。如果有人能幫上忙,那我就完全失敗了。

+0

WinForm或WPF? –

+0

它必須是'Keys.D0'和'Keys.D9' – NineBerry

+0

當你說Windows 10應用程序,你的意思是你想寫一個「通用應用程序」,因爲它被稱爲? – NineBerry

回答

2

通過的「Windows 10應用程序」假設你的意思是「通用應用程序」,你可以在一個名爲TextBox_KeyDown您用KeyDown事件的文本框的關聯方法,使用下面的代碼。

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

謝謝sooo – Zink

+0

只是多一個問題,我怎麼會得到它沒有多一個小數點在文本框? – Zink

+0

當鍵是小數點時,檢查文本框中是否已包含其中的一個,並將其設置爲Handled。 – NineBerry

0

假設這是一個WinForm應用,請參閱以下Control.KeyPress Event樣品在MSDN(重新: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. 
     } 
    } 
相關問題