Прямой способ запуска некоторых событий при изменении логического поля? - PullRequest
2 голосов
/ 21 апреля 2011

Интересно, есть ли способ прямого управления некоторыми событиями, когда булево поле меняется с true на false?

что-то вроде использования делегата?

На самом деле у меня много ввода пользователемэлементы управления (флажок, текстовое поле и т. д.), и я ищу способ использования foreach и control.disabled.

Ответы [ 4 ]

2 голосов
/ 21 апреля 2011

Используйте свойство для установки значения поля.Вызовите событие PropertyChanged в установщике свойства.

Пример кода:

bool Flag
{
    get { return this.flag; }
    set
    {
        if (this.flag != value) 
        {
            this.flag = value;
            // Raise PropertyChanged event here ..
        }
    }
}
2 голосов
/ 21 апреля 2011

Свойства всегда хороши для запуска события изнутри:

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.

1 голос
/ 21 апреля 2011

Это верно. Если вы используете WPF, вы можете реализовать интерфейс INotifyPropertyChanged и Binding, что очень удобно для вас.

Или используйте действие:

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

public bool IsIt
{
get{return isIt;}
set{isIt = value; if(YourAction != null) YourAction();}
}
0 голосов
/ 21 апреля 2011

Конечно, используйте обработчик событий в наборе доступа к свойству вместо непосредственного изменения переменной-члена ...

...