2012-12-22 3 views
0

Это был очень простой в VB.NET, я бы просто сделать следующееСобытие KeyPress в C#?

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, в левом верхнем углу, где находится раскрывающееся меню, нет возможности генерировать метод для событий (например, как вы можете сгенерировать Sub в VB), все, что у меня есть, - это WindowsFormsApplication1.Form1

+0

В будущем, пожалуйста, используйте тег [tag: winforms], когда ваш вопрос специфичен для Windows Forms. –

+0

Не знал, что такой тег существует, спасибо! – WillumMaguire

+0

Я бы рекомендовал подход Windows Standard, как указывает Ханс. Кроме того, вы можете использовать [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 на свойства значок, который вы можете увидеть список событий, дважды нажмите на «KeyPress»

0

О свойствах формы вы можете связать события в Ки события, определенные вашим кодом события. Или свяжите их с помощью кода на основе KeyFormcode. Я обновил это до VS 2015 с помощью C#:

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; 
    } 
} 
} 
Смежные вопросы