2013-05-06 57 views
0

三态ToggleButton的开箱序列似乎为On,Indeterminate,Off。在三态ToggleButton上更改状态序列

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

我试着修改我的StateChanging事件,但我认为这将导致无限循环。

回答

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