【问题标题】:.NET Form Design - Button Group "Photoshop Tool Style".NET 表单设计 - 按钮组“Photoshop 工具样式”
【发布时间】:2011-07-24 08:00:14
【问题描述】:

如果您曾经使用过图像编辑应用程序,您就会知道有一组用于选择当前工具的按钮。 One tool must be selected at all times, and when a tool is selected, the button stays pressed until a different tool is selected.

我创建了一个 ToolStrip 控件并向其中添加了我的 ToolStripButton 项,并设置了图像。对于每个按钮,我都将 CheckOnClick 属性设置为 true。

接下来我要做的是订阅每个按钮的 Checked 事件,并将其他按钮 CheckState 设置为未选中。不过,这似乎是一种 hack。

.NET 是否有办法通过 ToolStrip 控件完成此操作,或者是否有更好的控件可供使用?

我正在使用 C# 和 VS 2010,针对 .NET 框架 4

【问题讨论】:

    标签: c# .net winforms visual-studio controls


    【解决方案1】:

    我认为没有办法在 ToolStrip 上设置完全自动化的单选按钮。

    但是,它可以实现半自动化:

    在您的每个点击事件中调用SetToolButtonsChecked(sender);

        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            SetToolButtonsChecked(sender);
        }
    

    具体实现为:

        private static void SetToolButtonsChecked(object sender)
        {
            ToolStripButton btn = sender as ToolStripButton;
            ToolStrip strip = btn.GetCurrentParent();
            foreach (ToolStripItem item in strip.Items)
            {
                if (!(item is ToolStripButton)) continue;
                ToolStripButton btnTemp = item as ToolStripButton;
                if (!btnTemp.CheckOnClick) continue;
                btnTemp.Checked = btnTemp.Equals(btn);
            }
        }
    

    如果按钮具有属性CheckOnClick = true,则此方法会迭代同一工具条上的所有按钮并相应地设置 Checked 属性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-04-11
      • 2011-09-16
      • 2010-10-23
      • 2019-03-13
      • 2012-01-18
      • 1970-01-01
      • 2023-03-21
      • 2014-03-14
      相关资源
      最近更新 更多