2008-11-13 62 views
1

我在窗體上有一堆控件(文本框和組合框),其中tooltripcontainer和tooltripbuttons用於保存,取消編輯等。我們正在使用.Net 3.5 SP1
有很多用control.lostfocus和control.leave事件寫的邏輯。單擊工具欄按鈕時不會調用這些事件。有沒有辦法在按下這些按鈕的任何一個時手動調用這些事件。手動在控件上提升LostFocus事件

謝謝。

[編輯]

這是我如何解決了這個問題。謝謝Chris Marasti-Georg爲指針。由於tooltripbutton沒有焦點事件,因此在按鈕點擊事件時,我將焦點放在tooltrip而不是按鈕上。我們可以訪問該按鈕,使用

((ToolStripButton)發送方).Owner.Focus()

-Kishore

+0

很高興提供幫助。配置器提供了一個很好的觀點 - 將LostFocus/Leave邏輯移動到其他更可見的方法可能是一個好主意,因此它們可以由點擊處理程序調用。只是一個想法。 – 2008-11-14 15:06:26

回答

4

你可以聽按鈕上的點擊事件,並在處理程序中調用它們的焦點方法。這將(希望)導致以前集中控制正確響應。以下處理程序添加到每個按鈕的點擊事件:

private void ButtonClick(object sender, EventArgs e) { 
    if(sender != null) { 
     sender.Focus(); 
    } 
} 
1

您可以擴展這些控件,然後調用OnLostFocus和OnLeave放置工具條基類的保護方法...

1

我建議你登錄移動到事件處理程序之外的方法,並調用該方法......