首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ToolStripButton =“已按下”

ToolStripButton =“已按下”
EN

Stack Overflow用户
提问于 2011-04-07 06:08:39
回答 3查看 3.8K关注 0票数 3

我得到了一个工具条按钮,当我点击它时,我想让它保持“按下”或“选中”状态。就像一个开关。当我单击另一个按钮时,再次将按下的按钮设置为“未按下”。有什么想法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-04-07 06:11:10

我认为您想要使用CheckOnClick属性。将其设置为true,该按钮的行为应如您所描述的那样。要获取(或设置)当前状态,请使用Checked属性。

下面是一个完整的工作示例:

代码语言:javascript
复制
public partial class Form1 : Form
{
    private readonly IEnumerable<ToolStripButton> mutuallyExclusiveButtons;

    public Form1()
    {
        InitializeComponent();
        mutuallyExclusiveButtons = new[] { firstButton, secondButton };
    }

    private void ToolStripButton_Click(object sender, EventArgs e)
    {
        ToolStripButton button = sender as ToolStripButton;
        if (button != null && button.Checked && 
            mutuallyExclusiveButtons.Contains(button))
        {
            foreach (ToolStripButton item in mutuallyExclusiveButtons)
            {
                if (item != button) item.Checked = !button.Checked;
            }
        }
    }
}

firstButtonsecondButton都是ToolStripButton,它们都将CheckOnClick设置为true,并且它们的Clicked事件都与ToolStripButton_Click挂钩。如果按钮组中有两个以上的按钮,并且其中只有一个应该被选中,那么只需将任何需要的其他按钮添加到mutuallyExclusiveButtons序列中就可以了。

票数 7
EN

Stack Overflow用户

发布于 2011-04-07 06:16:38

正如ChrisF所说,您要查找的是"Checked“属性。( "CheckOnClick“属性实际上不是您想要的,因为您想要在two ToolStripButtons之间进行某种互斥的切换。)

您需要的是将代码(放入每个按钮的click事件中),将该按钮的Checked属性设置为True,将另一个按钮的Checked属性设置为False。

实际上,您可以使用CheckOnClick,然后添加代码,只将另一个按钮设置为False。

(嗯.我想知道何时Checked设置为True;您是否可以将两个按钮的MouseUp等事件捕获到一个处理程序中,并取消选中这两个按钮,然后CheckOnClick稍后会检查适当的按钮?只是一些极客的东西,以简化事物的名义使事情变得不必要地复杂化)

票数 1
EN

Stack Overflow用户

发布于 2011-04-07 06:12:24

维护一个关于按钮状态的标志(按下或正常)。对于每次按下按钮,调用一个方法将工具栏按钮刷新到正确的状态(保持按下状态或返回正常状态)。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5573581

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档