当我将ToolStripCombobox
设置为DropDownStyle
时,我有一个Simple
。我第一次打开菜单时,它会显示在屏幕的左上角。
但是,当我第二次选择相同的项目时,它会显示在正确的位置。
有没有办法阻止代码显示屏幕左上角的列表?
提前感谢您的帮助。
第一次
第二次
答案 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
中则没有。