C# 布尔字段更改时触发某些事件的直接方法?

C# 布尔字段更改时触发某些事件的直接方法?,c#,events,delegates,boolean,C#,Events,Delegates,Boolean,我想知道当布尔字段从true变为false时,是否有一种方法可以直接控制某些事件 比如使用委托 实际上,我有很多用户输入控件(复选框、文本框等),我正在寻找一种方法来绕过foreach和control.disabled的使用。当然有,在属性的集合访问器上使用事件引发器,而不是直接更改成员变量…使用属性来设置字段值。在属性的setter中引发PropertyChanged事件 示例代码: bool Flag { get { return this.flag; } set {

我想知道当布尔字段从true变为false时,是否有一种方法可以直接控制某些事件

比如使用委托


实际上,我有很多用户输入控件(复选框、文本框等),我正在寻找一种方法来绕过foreach和control.disabled的使用。

当然有,在属性的集合访问器上使用事件引发器,而不是直接更改成员变量…

使用属性来设置字段值。在属性的setter中引发PropertyChanged事件

示例代码:

bool Flag
{
    get { return this.flag; }
    set
    {
        if (this.flag != value) 
        {
            this.flag = value;
            // Raise PropertyChanged event here ..
        }
    }
}

属性始终可以从内部触发事件:

private bool check = false;
public bool MyCheckboxChecked
{
    get
    {
        return check;
    }

    set
    {
        if (check == true && value == false)
            MyEvent("MyCheckboxChecked is about to change from true to false!");
        check = value;
    }
}

如果要监视控件的公共字段(即
CheckBox.Checked
),则始终可以连接它们已经提供的事件,如
CheckedChanged

,没错。如果您使用的是WPF,则可以实现INotifyPropertyChanged接口和绑定,这非常方便您的需要

或使用操作:

private bool isIt;
public Action YourAction{get; set;}

public bool IsIt
{
get{return isIt;}
set{isIt = value; if(YourAction != null) YourAction();}
}

我相信您必须将Rising语句放在值更改语句之后..没错,最好在实际值更改之前引发ValueChanged事件,并在赋值之后引发ValueChanged事件,就像框架本身一样。修正了错误,谢谢。