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 回购:
我看到您在打开菜单时在菜单中添加项目。似乎所选区域及其宽度已经定义,并且它不会对您插入的新数据做出反应。如何尝试手动定义菜单项的宽度,看看是否有帮助。
我遇到了这个完全相同的问题,最终能够通过将 MenuStrip 的 ImageScalingSize
属性 设置为 16,16
来解决它(它不知何故被设置为 32, 32,可能是因为我在高 DPI 机器上编辑表格)
我有一个每次打开时都会动态填充的下拉菜单,这是执行此操作的逻辑:
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 回购:
我看到您在打开菜单时在菜单中添加项目。似乎所选区域及其宽度已经定义,并且它不会对您插入的新数据做出反应。如何尝试手动定义菜单项的宽度,看看是否有帮助。
我遇到了这个完全相同的问题,最终能够通过将 MenuStrip 的 ImageScalingSize
属性 设置为 16,16
来解决它(它不知何故被设置为 32, 32,可能是因为我在高 DPI 机器上编辑表格)