当我ToolStripCombobox将其设置DropDownStyle为Simple. 我第一次打开菜单时,它显示在屏幕的左上角。但是,当我第二次选择相同的项目时,它会显示在正确的位置。
有没有办法阻止代码在屏幕左上角显示列表?
预先感谢您的任何帮助。
第一次

第二次

当我ToolStripCombobox将其设置DropDownStyle为Simple. 我第一次打开菜单时,它显示在屏幕的左上角。但是,当我第二次选择相同的项目时,它会显示在正确的位置。
有没有办法阻止代码在屏幕左上角显示列表?
预先感谢您的任何帮助。
第一次

第二次

要解决问题,请将此代码放在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 });
这是一个奇怪的错误,我不知道为什么ToolStripComboBoxwith DisplayStyleset toSimple会遭受此错误,而是设置DisplayStyle为DropDown或DropDownList没有此错误。
使用上面的代码,我强制在ToolStripDropDownMenu显示之前创建所有者。
通过在设计模式中将 ToolStripCombobox 样式设置为 Dropdown,然后在表单的加载事件中将其设置为 Simple,我能够使其正确打开。
在调用其父对象的事件之前修改SelectedIndexon a将导致此问题。ToolStripComboBoxClick
在我的例子中,父对象是一个ToolStripMenuItem. SelectedIndex在的情况Click下修改 时ToolStripMenuItem,问题已得到解决。
我只遇到过这个问题,.NET Core 3.1没有遇到过.NET 4.x。