2010-11-12 199 views
0

我創建了我稱爲「LabeledTextBoxWithLookupControl」的繼承自UserControl的內容。我已經將這些控件中的幾個放在窗體上。UserControls:我錯過了什麼?

現在我開始認爲這是一個壞主意。

當我從事件中調用TopLevelControl.SelectNextControl(this, true, true, true, true)事件分配給UserControl中的TextBox時,它實際上是選擇下一個UserControl,我真的希望它選擇下一個用戶控件中的文本框。 UserControl的CanSelect屬性返回true,但我看不到任何簡單的方法來更改UserControl的控件樣式。另外,當我使用Tab順序模式時,我更喜歡不考慮用戶控件本身,而只是將UserControl內部的TextBox作爲Tab順序的候選項。我應該重寫UserControl的TabIndex和TabStop屬性,並使它們指向TextBox的TabIndex和TabStop?另外,我應該公開控件本身的屬性,還是應該公開每個控件作爲屬性來設置這些屬性,我希望能夠設置這些屬性,如標籤控件的Text屬性,點擊LookupControl的事件和TextBox的Text屬性。

+1

沒有攝製。 UserControl包含顯式代碼,如果它獲得焦點,它會將焦點傳遞給其第一個子控件。如果您需要幫助解決您的問題,請將一個小型repro項目發佈到文件共享服務或粘貼存儲箱。 – 2010-11-12 15:41:24

+0

@Hans:我用新創建的'UserControl'類型產生了這個問題,所以我不確定我是否同意你的「無repro」。 – 2010-11-12 15:53:05

回答

1

如果您不希望UserControl成爲製表符,而是它的內容,則必須確保它沒有ControlStyles.Selectable樣式。

在你UserControl添加的構造函數:

SetStyle(ControlStyles.Selectable, false); 
+0

真棒!謝謝! – Dave 2010-11-12 16:21:23

+0

@Dave:沒問題。樂於幫助。 :) – 2010-11-12 16:22:15