Eventhandler - nie odpala

0

Witam

Nie będę wklejał kodu, załączam projekt (VS2010EE) szkielet aplikacji. Proszę powiedzieć dlaczego zdarzenie TsmiClick nie odpala się.
Nie mam już pomysłów.

1

A co się ma odpalić, skoro nie ma podpiętych żadnych słuchaczy?

1

Dokładniej mówiąc: podpinasz się, ale nie pod właściwą instancję obiektu.

W MainViewControl.cs masz MainForm.Instance.TsmiClick+=new EventHandler(Instance_TsmiClick);, czyli podpięcie pod zdarzenie w obiekcie singletona, który de facto tworzony jest właśnie w tym miejscu, bo tutaj po raz pierwszy go używasz.

W Program.cs masz Application.Run(new MainForm());, a więc tworzysz obiekt klasy MainForm, który ma niewiele wspólnego z obiektem, który jest tworzony przez singletona.

Gdybyś zgodnie z zaleceniem wzorca singleton dodał prywatny konstruktor to wychwyciłbyś ten błąd na etapie kompilacji.

0
somekind napisał(a)

A co się ma odpalić, skoro nie ma podpiętych żadnych słuchaczy?

Pewnie ten projekt wydaje Ci się znajomy :) Zbudowałem na jego bazie całkiem sporą aplikację i tam wszystko działa.
Teraz chciałem zachować szkielet dla przyszłych programów, więc zostawiłem tylko to co uznałem za niezbędne.

Rev napisał(a)

Gdybyś zgodnie z zaleceniem wzorca singleton dodał prywatny konstruktor to wychwyciłbyś ten błąd na etapie kompilacji.

Tak, tu pies był pogrzebany.
W działającej aplikacji mam Application.Run(MainForm.Instance);
Szybko sobie z tym poradziłeś.

Przy okazji chciałbym się pochwalić:
http://www.gavel.user.icpnet.pl/mycomiccollector/

1 użytkowników online, w tym zalogowanych: 0, gości: 1