2013-03-01 67 views
2

讓我從一個簡單的例子開始重現我的問題:故障與窗口後更新ToolstripDropdownButton失去焦點

  1. 創建WinForms項目。
  2. 在上面放一個ToolStrip。
  3. 在其中製作一個ToolstripDropdownButton(沒有孩子)。
  4. 添加click事件處理程序的按鈕,像這樣的東西:

    MessageBox.Show("text", "Caption"); 
    

    (點是主窗體失去它的重點)。

爲了使問題更明顯,讓我們做一些不必要的補充:我們ToolStip到ManagerRenderMode的

  1. 設置RenderMode。
  2. 將它的自動大小設置爲false,並將其設置爲更大。

這應該足以重現它。運行該應用程序並單擊按鈕。你會得到彈出窗口。關閉彈出窗口和瞧...按鈕現在看起來像有人按住它。

有關如何將其重置爲默認狀態的任何想法?

我試圖調用按鈕ResetBackColor,Refresh ...也作爲ToolStrips。似乎沒有工作。也許我錯過了什麼?

+0

你在哪裏添加事件處理程序?如果你正在處理button_click事件,那麼它不應該以這種方式行事,但是如果你正在處理類似於button_down的事情,你的主GUI可能由於跨線程而停止運行,並且失敗。 – XtrmJosh 2013-03-01 16:25:47

+0

正如我所說的,它通常是「點擊事件處理程序」。 – Antenka 2013-03-01 16:27:41

回答

2

MessageBox或模態窗體會干擾。下拉菜單預計兒童菜單項。

樣品變通:

private void toolStripDropDownButton1_Click(object sender, EventArgs e) { 
    this.BeginInvoke(new Action(() => MessageBox.Show("Help"))); 
}