모노와 GTK # 로프를 배우는 중입니다.이 문제가 발생했습니다.이벤트를 구독 할 수 없습니다.
상단에서 하단으로 간단한 MVC를 작성하고 있습니다. 즉, 나중에 인터페이스/계약서를 작성합니다. 내가보기 클래스했습니다
public class ScanComparerController
{
ScanComparerModel model;
MainWindow view;
public ScanComparerController()
{
model = new ScanComparerModel();
view = new MainWindow();
view.Show();
view.Do += new MainWindow.DoHandler(PerformAction);
}
void PerformAction(MainWindow o, EventArgs e)
{
DoStuff();
}
}
:
내가 컨트롤러 클래스를했습니다 지금
public partial class MainWindow: Gtk.Window
{
public event DoHandler Do;
public delegate void DoHandler(MainWindow m, EventArgs e);
public MainWindow(): base (Gtk.WindowType.Toplevel)
{
Build();
btnGo.Clicked += buttonGo_clicked;
}
void buttonGo_clicked(object o, EventArgs e)
{
CheckConditions();
if (Do != null)
Do (this, EventArgs.Empty);
}
을, 어떤 이유로, 뷰는 항상 동안해야하지, 그 Do == null
믿는다 왜냐하면 나는 초기화 직후 리스너를 추가하기 때문이다. 그래도 내 코드는 정확히 I refer to과 같습니다.
나는 그것이 내가 놓친 부분이있을 거라는 것을 알고 있지만, 나는 그것을 알 수 없다. 그러나 성공하지
view.Do += new MainWindow.DoHandler(PerformAction);
view.Show();
:
편집 정의되지 않은 제안으로 1
, 나는에 선을 교환했습니다. 여전히 Do == null
및 PerformAction
은 호출되지 않습니다.
AdamBilinski에 의해 제안 내가, 사용자 정의 핸들러를 eleting 및 일반 이벤트 핸들러로 전환 시도 2
편집 할 수 있습니다. 그래도 성공하지 못했습니다.
내가 두 번 확인하고 Do
이 코드에서 다른 곳에서 참조되지 않은 3
편집 할 수 있습니다. 라인 교체를
자신 만의 이벤트 핸들러를 사용하는 이유가 있습니까? 왜 그냥 공개 이벤트 EventHandler하지 마; –
@AdamBilinski 전혀 없습니다. 성공없이 EvenHandler로 변경되었습니다. 그것은 작동해야합니다, 그렇죠? – moskalak