2012-07-10 91 views
0

我工作的一個C#WinForm的應用程序,我有一個按鈕,點擊一個對話框,要求出現密碼。如果密碼正確,則執行該按鈕下的代碼。這是主窗體上的代碼。自定義密碼的Winform

password pass = new password(); 
     pass.ShowDialog(); 
     if (pass.DialogResult == DialogResult.OK) 
     { 
      if (pass.Password == "12") 
      { 

而下面是我對OK按鈕密碼錶單

 private void btnOK_Click(object sender, EventArgs e) 
    { 
     button1.DialogResult = DialogResult.OK; 
    } 

的問題是,密碼錶單的OK按鈕已被點擊了兩次,並且使用的代碼。任何想法爲什麼?

+0

你能告訴你的'password'類的代碼? – eyossi 2012-07-10 06:45:49

回答

1

Button.DialogResult documentation我看到該屬性定義了什麼DialogResult返回到表單當按鈕被點擊。這意味着你必須在構造函數中的代碼行button1.DialogResult = DialogResult.OK;,或者乾脆將其設置在設計師,而不是在點擊事件。

0

呼叫this.Close(...)btnOK_Click

private void btnOK_Click(object sender, EventArgs e) 
{ 
    button1.DialogResult = DialogResult.OK; 
    this.Close(); 
} 
+0

我已經嘗試過了,但問題是,當我點擊的DialogResult自動設置爲取消而不是確定 – user1292656 2012-07-10 06:42:03

3

對話形式的AcceptButton屬性設置爲OK按鈕,刪除btnOK_click事件。

+0

我已經嘗試過了就OK了。當我點擊確定時沒有任何反應。 – user1292656 2012-07-10 06:46:34

+0

@ user1292656,因爲您處理了其「Click」事件。刪除事件處理程序,然後重試。 – Ria 2012-07-10 06:48:40

0

設置密碼的形式向btnOK的的AcceptButton。並刪除單擊事件處理程序。你並不需要一個事件處理程序 - 從技術文檔 - 如果此屬性的的DialogResult設置爲None以外的任何事情,如果通過ShowDialog方法顯示父窗體,單擊按鈕關閉父窗體,而無需您連接任何事件。當單擊按鈕時,窗體的DialogResult屬性將被設置爲按鈕的DialogResult。

MSDN:http://msdn.microsoft.com/en-us/library/system.windows.forms.button.dialogresult.aspx