ToolStripButton =“按下”

时间:2011-04-06 22:08:39

标签: vb.net winforms visual-studio

我有一个工具条按钮,当我点击它时,我想让它保持“按下”或“选中”。就像一个开关。当我点击另一个时,再次按下“未按下”。有什么想法吗?

3 个答案:

答案 0 :(得分:6)

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

这是一份完整的工作样本:

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;
            }
        }
    }
}

firstButtonsecondButtonToolStripButton个,CheckOnClick设置为true,其Clicked个事件连接到{{} 1}}。如果按钮组中有两个以上的按钮,其中只应检查一个按钮,只需在ToolStripButton_Click序列中添加任何所需的其他按钮,这也可以。

答案 1 :(得分:1)

正如ChrisF所说,你要找的是“Checked”属性。 (“CheckOnClick”属性实际上并不是您想要的,因为您需要在两个 ToolStripButtons之间进行一种互斥的切换。)

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

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


(嗯......我想知道当Checked设置为True时;你能将两个按钮的MouseUp等事件捕获到一个处理程序中,并取消选中BOTH按钮,然后CheckOnClick会在稍后检查相应的吗?只是一些怪物的东西,以简化事物的名义不必要地使事情复杂化)

答案 2 :(得分:-1)

保持按钮状态(按下或正常)的标记。按下每个按钮,调用一个方法,将工具栏按钮刷新到正确的状态(保持按下或恢复正常)。