2010-01-22 422 views
1

我有一個窗體的按鈕被設置爲窗體的AcceptButton。該表單還有其他幾個控件。現在,當我在其他控件上按Enter時,由於表單上的接受按鈕,表單會被關閉。 CancelButton也一樣。我該如何處理。我嘗試連接到表單和控件的按鍵keydown事件。沒有用。任何解決此問題的方法?C#:麻煩與Form.AcceptButton

由於一噸, Datte

回答

1

不完全知道你如何指望你的表單功能,但你可以不喜歡下面有過的東西多一點控制:

protected override bool ProcessCmdKey(ref Message msg, Keys keyData) 
    { 
     if (keyData == Keys.Enter) 
     { 
      // do something 
     } 
     if (keyData == Keys.Escape) 
     { 
      // do something else 
     } 
     return base.ProcessCmdKey(ref msg, keyData); 
    } 
4

那該是多麼AcceptButton性質的作品。它指定當您按<Enter>時自動點擊的按鈕。

如果您不想要這種行爲,請不要將其設置爲AcceptButton。沒有其他理由要這樣做。

1

您可以從表單中刪除的AcceptButton並設置將KeyPreview將處理其KeyDown事件的窗體上的屬性。在那裏你可以檢查回車鍵並相應地採取行動。

0

這是形式的,即

的功能之一,如果按鈕沒有焦點,如果你仍然希望當用戶點擊輸入要執行所需的代碼...

設置的屬性的AcceptButton即使按鈕沒有焦點,也可以通過按ENTER鍵來允許用戶點擊按鈕。

問候。

-2

嘗試這一個在VB>淨

If CType(Me.ActiveControl, Button).Name = Button1.Name Then 

     End If 
+0

該代碼是不正確(除了是VB.NET代碼,而不是C#代碼 - 看到問題標籤)。在進行類型轉換時,不能將目標類型指定爲字符串。另一種編寫這種方法的方法是'Object.ReferenceEquals(Me.ActiveControl(),btnSubmit)'。 – stakx 2010-01-22 09:14:33

+0

檢查它?我編輯。 – 2010-01-22 09:31:47

+0

@stakx:...說實話我更喜歡'==' – 2011-11-04 14:06:00