我有一个工具条按钮,当我点击它时,我想让它保持“按下”或“选中”。就像一个开关。当我点击另一个时,再次按下“未按下”。有什么想法吗?
答案 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;
}
}
}
}
firstButton
和secondButton
为ToolStripButton
个,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)
保持按钮状态(按下或正常)的标记。按下每个按钮,调用一个方法,将工具栏按钮刷新到正确的状态(保持按下或恢复正常)。