当DropDownStyle为Simple时,ToolStripCombobox显示在屏幕的左上角

时间:2016-11-02 22:28:15

标签: c# winforms toolstrip toolstripdropdown toolstripcombobox

当我将ToolStripCombobox设置为DropDownStyle时,我有一个Simple。我第一次打开菜单时,它会显示在屏幕的左上角。 但是,当我第二次选择相同的项目时,它会显示在正确的位置。

有没有办法阻止代码显示屏幕左上角的列表?

提前感谢您的帮助。

第一次

Result 1

第二次

Result 2

3 个答案:

答案 0 :(得分:2)

要解决此问题,请将此代码置于Load形式的事件中:

var item = toolStripComboBox1;
var createControl = item.Control.Parent.GetType().GetMethod("CreateControl",
    System.Reflection.BindingFlags.Instance | System.Reflection.BindingFlags.NonPublic);
createControl.Invoke(item.Control.Parent, new object[] { true });

这是一个奇怪的错误,我不知道为什么设置为ToolStripComboBox DisplayStyle的{​​{1}}会受到此错误的影响,但将Simple设置为{{} 1}}或DisplayStyle没有此错误。

使用上面的代码,我强制在显示之前创建所有者DropDown

答案 1 :(得分:1)

通过在设计模式下将ToolStripCombobox样式设置为Dropdown,然后在表单的load事件中将其设置为Simple,我能够使其正确打开。

答案 2 :(得分:0)

在调用父对象的ToolStripComboBox事件之前修改Click上的ToolStripMenuItem会导致此问题。

在我的情况下,父对象是SelectedIndex。在Click的{​​{1}}事件中修改ToolStripMenuItem时,此问题已解决。

我仅在.NET Core 3.1中遇到过此问题,而在.NET 4.x中则没有。