我得到了一个工具条按钮,当我点击它时,我想让它保持“按下”或“选中”状态。就像一个开关。当我单击另一个按钮时,再次将按下的按钮设置为“未按下”。有什么想法吗?
发布于 2011-04-07 06:11:10
我认为您想要使用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事件都与ToolStripButton_Click挂钩。如果按钮组中有两个以上的按钮,并且其中只有一个应该被选中,那么只需将任何需要的其他按钮添加到mutuallyExclusiveButtons序列中就可以了。
发布于 2011-04-07 06:16:38
正如ChrisF所说,您要查找的是"Checked“属性。( "CheckOnClick“属性实际上不是您想要的,因为您想要在two ToolStripButtons之间进行某种互斥的切换。)
您需要的是将代码(放入每个按钮的click事件中),将该按钮的Checked属性设置为True,将另一个按钮的Checked属性设置为False。
实际上,您可以使用CheckOnClick,然后添加代码,只将另一个按钮设置为False。
(嗯.我想知道何时Checked设置为True;您是否可以将两个按钮的MouseUp等事件捕获到一个处理程序中,并取消选中这两个按钮,然后CheckOnClick稍后会检查适当的按钮?只是一些极客的东西,以简化事物的名义使事情变得不必要地复杂化)
发布于 2011-04-07 06:12:24
维护一个关于按钮状态的标志(按下或正常)。对于每次按下按钮,调用一个方法将工具栏按钮刷新到正确的状态(保持按下状态或返回正常状态)。
https://stackoverflow.com/questions/5573581
复制相似问题