【发布时间】:2014-11-11 05:59:20
【问题描述】:
IDE:vs 2010,c# .net,winforms
嗨,我正在创建一个切换按钮 userControl,它将具有 ON 和 OFF 状态,我还创建了一个属性来设置按钮的初始状态(与复选框 IsChecked 相同)。
public bool Checked
{
get { return isToggleOn; }
set { isToggleOn = value;
onPropertyChanged();
}
}
private void onPropertyChanged()
{
this.BackgroundImage = isToggleOn ? Properties.Resources.toggleOnMIUI : Properties.Resources.toggleOffMIUI;
IsChecked = isToggleOn ? true : false;
}
这在设计时有效,现在在 form1 中我添加了这个控件并创建了 OnClickEvent 来检查当前状态:
private void ucTglOverStepping_Click(object sender, EventArgs e)
{
if (ucTglOverStepping.Checked)
{
doWork = true; //do work is bool variable in form1.cs
}
else if (!ucTglOverStepping.Checked)
{
doWork = false;
}
}
现在的问题是,当切换按钮处于开启状态时,它会进入其他状态。
因为 onPropertyChanged() 是在这个 ucTglOverStepping_Click(object sender, EventArgs e) 函数之前执行的,所以有没有办法在执行 ucTglOverStepping_Click() 函数之后执行 onPropertyChanged() ,或者任何其他技术来解决这个问题。
问题解释:
测试用例 1:假设当前状态为 ON
- 用户点击按钮 -> 它将进入关闭状态(选中应该变为假,它应该进入 OnClickEvent 的其他条件。但选中变为真。)
【问题讨论】: