PerformClick + KeyDown 在 c# 中不起作用,但在 vb 网络中工作正常
PerformClick + KeyDown doesn't work c# but works fine in vb net
我正在尝试将 VB.NET 代码转换为 C#,从我发现此 PerformClick 问题的所有代码中,我不知道发生了什么。
我的VB.Net代码:
Private Sub FormLogin_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
Select Case e.KeyCode
Case Keys.Enter
FlBtnLogin.PerformClick()
End Select
End Sub
代码可以运行,但是当我尝试将其转换为 C# 时,却没有运行。
我的 C# 代码
private void FormLogin_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
FlBtnLogin.PerformClick();
}
}
事件处理程序
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.FormLogin_KeyDown);
如有任何帮助和指导,我们将不胜感激,谢谢
根据@John 的最佳选择,如果您想在 KeyPreview
为 OFF 时将事件置于特定控件中,则这是另一种选择。
此代码仅在窗体处于焦点上时有效,但如果将 focus/cursor 放在其他控件上则无效。
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
MessageBox.Show("Enter!");
}
}
当焦点位于 TextBox 上时将调用此事件。
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
MessageBox.Show("Enter!");
}
}
因此您必须在控件上添加事件,您可能会在其中按下 Enter 键,这是密码的文本框。
您需要将表单的 KeyPreview
属性 设置为 true
。如果它是默认的 false
,那么当可以引发键盘事件的子控件获得焦点时,窗体将不会引发键盘事件。将它设置为 true
并且表单将在子控件之前引发事件。在 C# 和 VB 中都是如此,因此它与您要转换的代码没有任何关系。
我正在尝试将 VB.NET 代码转换为 C#,从我发现此 PerformClick 问题的所有代码中,我不知道发生了什么。
我的VB.Net代码:
Private Sub FormLogin_KeyDown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
Select Case e.KeyCode
Case Keys.Enter
FlBtnLogin.PerformClick()
End Select
End Sub
代码可以运行,但是当我尝试将其转换为 C# 时,却没有运行。
我的 C# 代码
private void FormLogin_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
FlBtnLogin.PerformClick();
}
}
事件处理程序
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.FormLogin_KeyDown);
如有任何帮助和指导,我们将不胜感激,谢谢
根据@John 的最佳选择,如果您想在 KeyPreview
为 OFF 时将事件置于特定控件中,则这是另一种选择。
此代码仅在窗体处于焦点上时有效,但如果将 focus/cursor 放在其他控件上则无效。
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
MessageBox.Show("Enter!");
}
}
当焦点位于 TextBox 上时将调用此事件。
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
MessageBox.Show("Enter!");
}
}
因此您必须在控件上添加事件,您可能会在其中按下 Enter 键,这是密码的文本框。
您需要将表单的 KeyPreview
属性 设置为 true
。如果它是默认的 false
,那么当可以引发键盘事件的子控件获得焦点时,窗体将不会引发键盘事件。将它设置为 true
并且表单将在子控件之前引发事件。在 C# 和 VB 中都是如此,因此它与您要转换的代码没有任何关系。