2012-12-22 70 views
0

這是VB.NET很簡單,我只想做以下C#中的KeyPress事件?

Private Sub TextBox1_KeyPress(sender As Object, e As System.Windows.Forms.KeyPressEventArgs) Handles TextBox1.KeyPress 
    If e.KeyChar = Microsoft.VisualBasic.ChrW(Keys.Enter) Then 
     e.Handled = True 
     cmdOk.PerformClick() 
    End If 
End Sub 

我無法弄清楚如何做到在C#中等價,而不是文本框或一般形式。在Form1.cs中,在左下角的下拉菜單中,沒有選項可以爲事件生成方法(比如如何在VB中生成Sub),我只有WindowsFormsApplication1.Form1

+0

將來,當您的問題針對Windows窗體時,請使用[tag:winforms]標籤。 –

+0

不知道這樣的標籤存在,謝謝! – WillumMaguire

+0

漢斯指出,我推薦Windows標準方法。此外,您可以使用[CodeChanger](http://codechanger.com/)將VB.Net轉換爲C#,反之亦然。 –

回答

8

首先選擇文本框。確保您看到「屬性」窗口,如果沒有,請使用「視圖」菜單。點擊閃電圖標並找到KeyPress事件。雙擊它。然後使其看起來類似於:

private void textBox1_KeyPress(object sender, KeyPressEventArgs e) { 
     if (e.KeyChar == (char)Keys.Enter) { 
      e.Handled = true; 
      cmdOk.PerformClick(); 
     } 
    } 

這實際上並不是正確的做法,而不是在VB.NET中。將窗體的AcceptButton屬性設置爲cmdOk,以便不必編寫任何代碼。您現在還會在OK按鈕周圍留下沉重的邊框,以便用戶知道這是在按Enter時被激活的鍵。從當地圖書館拿起一本關於Winforms編程的書,這些東西很難通過反覆試驗來猜測。

1

可以找到代碼示例here

要自動創建特定事件的方法,只需使用控件屬性窗口頂部的下拉菜單即可。

我沒有VS在這裏,但你可以看看this youtube-video @ 0:40你看到一個VS截圖,在右下角你會找到屬性窗口。在它的頂部你會發現事件的下拉菜單。

0

選擇您的文本框,打開屬性窗口,點擊活動圖標nereast將屬性圖標,你可以看到事件的列表中,雙擊「按鍵響應」

0

上,您可以將事件鏈接到關鍵的窗體屬性事件代碼定義的事件。或者通過基於KeyFormcode的代碼鏈接那些。我用c#更新了這個版本到VS 2015:

using System; 
using System.Windows.Forms; 

namespace KeyDemoForm 
{ 
public partial class KeyDemoForm : Form 
{ 

    public KeyDemoForm() 
    { 
     InitializeComponent(); 
    } 

    public void KeyDemoForm_KeyPress(object sender, KeyPressEventArgs e) 
    { 
     charLabel.Text = "Key pressed: " + e.KeyChar; 
    } 

    public void KeyDemoForm_KeyDown(object sender, KeyEventArgs e) 
    { 
     KeyInfoLabel.Text = 
     "Alt: " + (e.Alt ? "yes" : "No") + '\n' + 
     "Shift: " + (e.Shift ? "yes" : "No") + '\n' + 
     "Ctrl: " + (e.Control ? "yes" : "No") + '\n' + 
     "KeyCode: " + e.KeyCode + '\n' + 
     "KeyValue: " + e.KeyValue + '\n' + 
     "KeyData: " + e.KeyData; 
    } 

    public void KeyDemoForm_KeyUp(object sender, KeyEventArgs e) 
    { 
     charLabel.Text = " "; 
     KeyInfoLabel.Text = " "; 
    } 

    public void KeyDemoForm_Load(object sender, EventArgs e) 
    {    
     this.KeyPreview = true; 
     this.KeyDown += KeyDemoForm_KeyDown; 
     this.KeyUp  += KeyDemoForm_KeyUp; 
     this.KeyPress += KeyDemoForm_KeyPress; 
    } 
} 
}