Практическое использование событий интерфейса [закрыто]

Я всегда ставил код ниже в первых двух строках файлов python:

# -*- coding: utf-8 -*-
from __future__ import unicode_literals
29
задан LarsTech 16 July 2012 в 14:11
поделиться

6 ответов

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

Вот мой интерфейс.

public interface ISerialPortWatcher
{
    event EventHandler<ReceivedDataEventArgs> ReceivedData;
    event EventHandler StartedListening;
    event EventHandler StoppedListening;

    SerialPortSettings PortOptions { set; }

    bool Listening { get; set; }
    void Stop();
    void Start();
}

public class ReceivedDataEventArgs : EventArgs
{
    public ReceivedDataEventArgs(string data)
    {
        Data = data;
    }
    public string Data { get; private set; }
}
49
ответ дан Daniel A. White 16 July 2012 в 14:11
поделиться

Отличным примером в .NET Framework является интерфейс INotifyPropertyChanged . Этот интерфейс состоит только из одного члена: события PropertyChanged .

В WPF вы можете указать, что элемент управления будет отображать определенное свойство экземпляра объекта. Но как этот элемент управления обновится, если изменится базовое свойство?

Если связанный объект реализует интерфейс INotifyPropertyChanged , среда WPF может просто прослушать PropertyChanged и обновить соответствующим образом.

17
ответ дан Andrew Shepherd 16 July 2012 в 14:11
поделиться

Вот один из примеров

public interface IMainAppWindow
{
   event EventHandler Closed;
}

// version 1 main window
public MainForm : Form , IMainAppWindow
{

}

// version 2 main window
public MainWindow : Window , IMainAppWindow
{
  event EventHandler Closed;

  public void OnClosed(object sender,RoutedEventArgs e)
  {
    if(Closed != null)
    {
      Closed(this,e);
    }
  }
}

У меня есть такой код в одном из моих приложений. Приложение было написано в winforms, а затем обновлено до WPF.

13
ответ дан Andrew Keith 16 July 2012 в 14:11
поделиться

События в интерфейсах работают почти так же, как методы. Вы можете использовать их так же, как и любой другой интерфейс.

public interface IInterface {
    event EventHandler QuestionAsked;
}

public class Class : IInterface {
    event EventHandler QuestionAsked;

    //As with typical events you might want an protected OnQuestionAsked
}
4
ответ дан Bob 16 July 2012 в 14:11
поделиться

Классическим сценарием является паттерн MVP с пассивным представлением. Форма реализует интерфейс представления, который имеет событие NameChanged. Презентатор, который создает / использует представление, подписывается на это событие. При изменении текста имени в текстовом поле это событие запускается. Затем докладчик уведомляется. Поскольку докладчик знает о событии только из интерфейса представления, вы можете предоставить имитирующее представление для тестирования. Представление полностью отделено от ведущего.

2
ответ дан softveda 16 July 2012 в 14:11
поделиться

INotifyPropertyChanged используется в рамках.

Просто посмотрите на событие INotifyPropertyChanged.PropertyChanged

.
4
ответ дан Rohan West 16 July 2012 в 14:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: