2009-05-28 93 views
0

我有一個usercontrol,其中包含一個FlowLayoutPanel(自上而下流)與一堆單選按鈕。該控件暴露了一個CheckedChanged事件,只要其中一個單選按鈕的檢查發生更改就會觸發該事件。箭頭鍵和更改控件的焦點掛起應用程序

我的表單包含usercontrol和一個文本框。我訂閱usercontrol的CheckedChanged事件,並根據檢查哪個單選按鈕,我禁用文本框或將焦點放在文本框內。

當更改單選按鈕的檢查狀態時,所有這些都可以正常使用鼠標單擊。但是,使用箭頭鍵時,它將無限期地掛起。我不明白爲什麼差異。

下面是步驟來重現我看到的行爲:

  1. 創建一個用戶控件拖放一個FlowLayoutPanel控制,並設置其FlowDirection = TopDown。然後將兩個單選按鈕添加到FlowLayoutPanel

  2. 在用戶控件

    public event EventHandler CheckedChanged 
    { 
        add { radioButton2.CheckedChanged += value; } 
        remove { radioButton2.CheckedChanged -= value; } 
    } 
    
  3. 創建視窗表單提供的事件處理程序,並刪除上述的用戶控制。添加一個文本框並將Enabled設置爲False。訂閱用戶控件的CheckedChanged事件如下

    private void userControl11_CheckedChanged(object sender, EventArgs e) 
    { 
        textBox1.Select(); 
    } 
    
  4. 運行。請注意,如果您使用鼠標在單選按鈕之間單擊,則可以正常工作;但如果使用上/下箭頭鍵,它會崩潰。

+3

我打賭你的問題沒有包含足夠的信息來解決這個問題。你能做出最簡單的(最少的代碼行)測試用例來演示這個問題並在這裏添加它嗎? – Rytmis 2009-05-28 12:09:00

回答

0
public event EventHandler CheckedChanged 
{ 
    add { 
     radioButton2.CheckedChanged += value; 
     } 
    remove { 
     radioButton2.CheckedChanged -= value; 
     } 
} 

嗯,value未初始化?或者我錯過了什麼?