2008-12-30 79 views
2

我有一個用戶控件,其行爲與選項卡控件類似。 選項卡標題爲UserControl實例,它們將覆蓋Paint事件以使它們看起來很自定義。UserControl Focus Issue - Focus()有時會返回false

爲了利用我們標籤頁上各種控件的驗證事件,當用戶點擊標籤頁眉時,我們將焦點設置爲TabHeader用戶控件。

我注意到Control.Focus()有時會返回false,但文檔並沒有說明爲什麼Control.Focus()將永遠返回false而不是控件無法獲得焦點。但我不知道爲什麼。

這是我看到: 如果我TabHeaderUserControl不包含任何的子控件,我叫myControl.Focus()MouseClick事件,焦點返回true。

如果我的TabHeaderUserControl包含子控件,並且我從MouseClick事件中調用myControl.Focus(),則焦點返回false。

如果我的TabHeaderUserControl包含子控件,並且我從myControl.MouseClick事件中調用myControl.subControl.Focus(),則focus返回true。

有人可以解釋這一點嗎?

回答

4

UserControl上調用Focus()選擇該用戶控件的第一個子控件。那的確會解釋你的行爲。

你可以嘗試撥打Select()而不是Focus(),看看是否有效。

+0

儘管這個答案是幾年前,該解決方案爲我工作。我點擊了一個樹形視圖上的節點,並且根據用戶是否正在添加,編輯或刪除而啓用了用戶控件,但用戶控件中的另一個控件將需要焦點。 Select()像魅力一樣工作。謝謝。 – MikeMalter 2011-05-23 22:15:43

1

你試過「Control.ContainsFocus」嗎?如果有任何子控件關注它,則應該返回true。 MSDN Link

謝謝, 詹姆斯