You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ToolStripMenuItem单选实现问题:如何确保仅选中一个屏幕旋转选项

实现ToolStrip菜单单选功能的简洁方案

核心思路

给所有旋转角度子菜单项绑定同一个Click事件处理方法,在方法中统一处理单选逻辑,彻底消除重复代码。

步骤1:绑定统一事件

在窗体的构造函数或初始化方法中,将四个子菜单项的Click事件指向同一个处理方法:

public YourFormName()
{
    InitializeComponent();
    // 绑定统一事件
    DegreesToolStripMenuItem6.Click += RotationMenuItem_Click;
    DegreesToolStripMenuItem7.Click += RotationMenuItem_Click;
    DegreesToolStripMenuItem8.Click += RotationMenuItem_Click;
    DegreesToolStripMenuItem9.Click += RotationMenuItem_Click;
}

步骤2:编写通用事件处理逻辑

在事件方法中,先取消父菜单下所有子项的选中状态,再将当前点击的项设为选中,同时可直接获取选中的角度值:

private void RotationMenuItem_Click(object sender, EventArgs e)
{
    ToolStripMenuItem clickedItem = sender as ToolStripMenuItem;
    if (clickedItem == null) return;

    // 遍历父菜单子项,取消全部选中状态
    foreach (ToolStripMenuItem item in PreferedRotationToolStripMenuItem.DropDownItems)
    {
        item.Checked = false;
    }

    // 标记当前点击项为选中
    clickedItem.Checked = true;

    // 获取选中的旋转角度(推荐用Tag属性存值,比解析文本更可靠)
    // 提前给每个子项设置Tag:比如DegreesToolStripMenuItem6.Tag = 0;
    int rotationAngle = (int)clickedItem.Tag;
    
    // 这里添加屏幕旋转的业务逻辑
    // SetScreenRotation(rotationAngle);
}

优化建议

  • 给每个子菜单项的Tag属性设置对应的角度数值(0、90、180、270),避免解析文本可能出现的格式错误。
  • 若初始需要默认选中某一项,可在初始化时直接设置对应项的Checked = true。

内容的提问来源于stack exchange,提问作者Alex McCreath

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.24 16:16:05