2017-05-13 173 views
1

我写了下面的代码,除了按Enter键仍然不会单击他的Login按钮,它们都可以正常工作。帮帮我!C#按Enter键按下按钮

int failedAttempts; 

private void uiPasswordTextBox_KeyDown(object sender, KeyEventArgs e) 
{ 
    if (e.KeyCode == Keys.Enter) 
    { 
     uiLoginButton.PerformClick(); 
    } 
} 

private void uiLoginButton_Click(object sender, EventArgs e) 
{ 
    if (uiPasswordTextBox.Text == "alacaZam") 
    { 
     uiPasswordTextBox.Text = string.Empty; 
     this.uiLogOffButton.Enabled = true; 
     this.uiMarkEntryNameTextBox.Enabled = true; 
     this.uiMarkEntryClassTestTextBox.Enabled = true; 
     this.uiMarkEntryConicalTextBox.Enabled = true; 
     this.uiMarkEntryDestructiveTextBox.Enabled = true; 
     this.uiStoreMarksButton.Enabled = true; 
     this.uiShowMarksAZButton.Enabled = true; 
     this.uiShowMarks100_0Button.Enabled = true; 
    } 
    else if (failedAttempts <= 1) 
    { 
     failedAttempts++; 
     MessageBox.Show("You are permitted 3 attempts. " + (3 - failedAttempts) + " attempt/s remaining.", "Incorrect Password", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); 
    } 
    else if (failedAttempts == 2) 
    { 
     MessageBox.Show("Access Denied", "Incorrect Password. Entered 3 Times", MessageBoxButtons.OK, MessageBoxIcon.Exclamation); 
     Application.Exit(); 
    } 
} 
+1

尝试在输入上调用uiLoginButton_Click(null,null)按 –

+0

检查此问题。 http://stackoverflow.com/questions/299086/c-sharp-how-do-i-click-a-button-by-hitting-enter-whilst-textbox-has-focus –

+1

你应该期待设置*默认操作*(和取消操作)在您的表单上,而不是手动执行*。 –

回答

0

你可以改变你的源代码如下:

而不是

uiLoginButton.PerformClick(); 

只需使用

uiLoginButton_Click(null, null); 

这调用该方法uiLoginButton_Click不带任何参数,因为你不要依赖它们,这将作为一个正常的函数调用。

0

除了手动调用click方法之外,只需创建第三个方法来保存uiLoginButton_Click()方法中的所有逻辑,并使uiLoginButton_Click()成为调用该方法的一行代码即可。

然后,只需将uiLoginButton.PerformClick()方法也转换为该方法即可。

手动触发订阅的事件方法是糟糕的设计。

1

您必须使用表单的'AcceptButton'属性。如下所示,将所需按钮分配给表单的'AcceptButton'属性

public Form1() 
{ 
    InitializeComponent(); 
    AcceptButton = this.uiLoginButton; 
} 

无需编写'KeyDown'事件。您可以删除您的'uiPasswordTextBox_KeyDown'事件