0

这在 VB.NET 中非常简单,我只需执行以下操作

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

4

4 回答 4

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 编程的书,这些东西通过反复试验很难猜到。

于 2012-12-22T00:45:10.667 回答
1

代码示例可以在这里找到

要为特定事件自动创建方法,只需使用控件属性窗口顶部的下拉菜单。

我这里没有 VS,但你可以看看这个 youtube-video @ 0:40 你会看到一个 VS 屏幕截图,在右下角你会找到属性窗口。在其顶部,您会找到事件的下拉列表。

于 2012-12-22T00:43:49.797 回答
0

选择您的文本框,打开属性窗口,单击属性图标附近的事件图标,您可以看到事件列表,双击“KeyPress”

于 2012-12-22T07:15:22.373 回答
0

在 Form 属性上,您可以将事件链接到事件代码定义的 Key 事件。或者通过基于 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;
    } 
}
}
于 2016-04-15T15:43:01.127 回答