2011-11-07 71 views
1

我有一個自定義UserControl,其中只包含一個TextBoxWinForms UserControl如何停止接收焦點的控件

當我將控件設置爲Enabled = False時,TextBox被禁用,但控件不是(控件仍然觸發Enter事件)。

如何確保UserControl不會獲得焦點?

我啓用的屬性如下:

Private _Enabled As Boolean = True 

Public Shadows Property Enabled As Boolean 
    Get 
     Return _Enabled 
    End Get 
    Set(value As Boolean) 
     _Enabled = value 
     txtTime.Enabled = value 
    End Set 
End Property 
+2

只需刪除此屬性。 –

+0

@Hans - 刪除它的問題是,當UserControl Enabled屬性發生更改時,TextBox不會啓用/禁用 –

+0

這很煩人,Enabled始終禁用任何子控件。對* Shadows *小心,它有一個訣竅,可以退縮。 –

回答

3

要回答你的問題立即,您需要將enabled屬性傳遞給基礎對象:

public new bool Enabled { 
    get { return _Enabled; } 
    set { 
     _Enabled = value; 
     textBox1.Enabled = value; 
     base.Enabled = value; 
    } 
} 

但是......它使用的是OnEnabledChanged覆蓋做正確的方法:

protected override void OnEnabledChanged(EventArgs e) { 
    textBox1.Enabled = this.Enabled; 
    base.OnEnabledChanged(e); 
} 

(當你標記它的C#,我認爲你可以回自己轉換成VB.net)

+0

感謝 - 轉換它沒有問題。 –