1

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

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

预先感谢您的任何帮助。

第一次

结果 1

第二次

结果 2

4

3 回答 3

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 });

这是一个奇怪的错误,我不知道为什么ToolStripComboBoxwith DisplayStyleset toSimple会遭受此错误,而是设置DisplayStyleDropDownDropDownList没有此错误。

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

于 2016-11-02T23:06:28.897 回答
1

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

于 2020-10-16T21:52:50.210 回答
0

在调用其父对象的事件之前修改SelectedIndexon a将导致此问题。ToolStripComboBoxClick

在我的例子中,父对象是一个ToolStripMenuItem. SelectedIndex在的情况Click下修改 时ToolStripMenuItem,问题已得到解决。

我只遇到过这个问题,.NET Core 3.1没有遇到过.NET 4.x

于 2019-12-29T15:24:40.530 回答