ToolStripComboBox事件未触发

本文关键字:事件 ToolStripComboBox | 更新日期: 2023-09-27 18:08:58

我在ToolStrip上有一个ToolStripComboBox,然后我的应用程序被最小化到托盘,ShowInTaskBar被设置为false。之后,我的应用程序恢复到正常状态。从这一刻起,ToolStripComboBox将不会触发任何事件。

this.ShowInTaskbar = false;
this.WindowState = FormWindowState.Minimized;

this.ShowInTaskbar = true;
this.WindowState = FormWindowState.Normal;
this.Show();

我怎样才能把这件事带回到工作中去?

ToolStripComboBox事件未触发

这是。net Framework Windows Forms中的一个bug。设置后,ShowInTaskbar = false事件将不会被引发。

我们可以简单地通过在设置ShowInTaskbar = true之后调用Control类的内部方法来解决这个问题;

MethodInfo dynMethod = toolStripComboBox1.ComboBox.GetType().GetMethod("RecreateHandleCore",BindingFlags.NonPublic | BindingFlags.Instance); 
dynMethod.Invoke(toolStripComboBox1.ComboBox, new object[] {});

在此之后事件将被正确引发。

另一个解决方案:顺序很重要!

this.Show()
this.ShowInTaskbar = true;