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