更改三态ToggleButton上的状态序列

时间:2013-05-06 15:22:27

标签: togglebutton

三态ToggleButton的开箱即用序列似乎是On,Indeterminate,Off。

我想将此更改为On,Off,Indeterminate;类似于提出的问题here

我已尝试修改StateChanging事件,但我认为这会导致无限循环。

1 个答案:

答案 0 :(得分:0)

我使用ToggleStateChanging简要地实现了一个工作解决方案来改变状态的顺序,然后使用全局变量来避免无限循环。然而,我遇到了一个新问题,其中ToggleButton具有某种自动主题,其中每个状态和MouseHover的阴影都不同。我不想要那个主题,所以我最终只是将按钮更改为标准按钮,现在我使用按钮的Tag属性来模拟ToggleState。

我的特定解决方案使用Telerik RadButton,但这对于WinForm上的标准按钮也适用。

private void myButton_Click(object sender, EventArgs e)
{
    RadButton myButton = (RadButton)sender;

    switch (myButton.Tag.ToString())
    {
        case "Indeterminant":
            myButton.Tag = "On";
            break;
        case "On":
            myButton.Tag = "Off";
            break;
        case "Off":
            myButton.Tag = "Indeterminant";
            break;
        default:
            break;
    }
}