C# ToolStripMenuItem中的奇怪视觉行为

C# ToolStripMenuItem中的奇怪视觉行为,c#,.net,winforms,drop-down-menu,C#,.net,Winforms,Drop Down Menu,我有一个下拉菜单,每次打开时都会动态填充,下面是它的逻辑: private void joysticksToolStripMenuItem_DropDownOpening(object sender, EventArgs e) { _joysticks = _joystickWrapper.FindDevices(DeviceType.Joystick); joysticksToolStripMenuItem.DropDownItems.Clear(); foreach

我有一个下拉菜单,每次打开时都会动态填充,下面是它的逻辑:

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
,整个应用程序中没有自定义可视代码

我在当前机器(Windows10Build9926)和开发服务器(Server2012R2)上进行了尝试,结果相同。我还将其编译到了NetFramework4.5和4.5.1

编辑

对于感兴趣的人,以下是本项目的git回购协议:


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

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

不要掷骰子。实际上,它甚至不允许我修改
item.Width
item.Height
。我更改了它们,但它没有在视觉上反映出来。将设计时宽度保持在较高的一侧如何?我应该提到,我将宽度设置为600,并且没有视觉上的差异。菜单项的宽度只是减小宽度。要增加菜单项的宽度,还必须增加其父对象的宽度
ToolStripDropDownMenu.width
。我无法在Windows 8.1计算机上重现此问题。@感谢您抽出时间为我测试。发布项目的git回购协议会有帮助吗?你曾经解决过这个问题吗?“我目前正经历着完全相同的问题。”@DanielSimpkins没有。你知道,我几乎完全忘记了这个问题,但在另一个项目中,同样的问题又出现了!你的修复效果很好..ImageScaling=ToolStripItemImageScaling。没有人能帮我解决这个问题。谢谢你给我指明了正确的方向。