ToolStripMenuItem 的奇怪视觉行为

Odd visual behavior from ToolStripMenuItem

我有一个每次打开时都会动态填充的下拉菜单,这是执行此操作的逻辑:

private void joysticksToolStripMenuItem_DropDownOpening(object sender, EventArgs e)
{
    _joysticks = _joystickWrapper.FindDevices(DeviceType.Joystick);
    joysticksToolStripMenuItem.DropDownItems.Clear();
    foreach (var di in _joysticks)
    {
        var item = new ToolStripMenuItem(di.ProductName);
        item.Checked = di.InstanceGuid == _joystickWrapper.CurrentDeviceInfo.InstanceGuid;
        joysticksToolStripMenuItem.DropDownItems.Add(item);
    }
}

当我运行应用程序时,这是我看到的:

检查位置错误,蓝色区域太宽。

关于在哪里寻找解决这个问题的任何想法?整个菜单都是System.Windows.Forms,整个应用没有自定义视觉代码

我在我当前的机器 (Windows 10 Build 9926) 和我的开发服务器 (Server 2012R2) 上试过,结果相同。我还将其编译为 NET Framework 4.5 和 4.5.1

编辑

对于那些感兴趣的人,这里是这个项目的 git 回购:

https://github.com/adam8797/RovControl

我看到您在打开菜单时在菜单中添加项目。似乎所选区域及其宽度已经定义,并且它不会对您插入的新数据做出反应。如何尝试手动定义菜单项的宽度,看看是否有帮助。

我遇到了这个完全相同的问题,最终能够通过将 MenuStrip 的 ImageScalingSize 属性 设置为 16,16 来解决它(它不知何故被设置为 32, 32,可能是因为我在高 DPI 机器上编辑表格)