Няколко въпроса : windows forms

Няколко въпроса : windows forms

Woofles avatar Woofles 7 Точки

Няколко въпроса : windows forms

Няма да навлизам в много детайли, само най-общо проблема:

1: Може ли един MouseEventHandler метод да извика друг?
2: Може ли какъвто и да е event (в кавички може би?...) да извика друг?
3: Да изкарам ли просто кода от въпросните евенти в отделни методи? :)

Първият ми въпрос може би е малко ненужен, но от него ми идват и останалите.
Видях че this.****.MouseClick трябва задължително да приема метод MouseEventHandler а аргумета му от своя страна е void със object и MouseEvenArgs аргументи. Неизбежно ли е №3 или алтернативите не си струват труда?
За сега съм се примирил с отделени методи но всички те за сега се викат само от 2-3 места и става... объркващо (макар и леко съкратено, но това не ми е приоритет).

P.S.: Не мисля че въпросът е за "Основи" затова го задавам в Advanced C#. Ще съм доволен и на отговори "да/не" - колкото да знам дали си струва да ровя за игла в купа сено.

0
C# Advanced 04/08/2016 11:53:15
Zakkgard avatar Zakkgard 39 Точки

MouseEventHandler-а е делегат и като дефинираш такъв, дефинираш кой метод ще handle-не съответния евент. На даден евент можеш да subscribe-неш повече от един handler method и можеш да ги викаш един от друг. Колкото до 3, според мен трябва да са отделни методи ако handle-ват различни евенти. Най-добре първо да се запознаеш по-добре с делегати и евенти (имат добри обяснения в ’C# 6 in a nutshell' или примерно C# книгата на apress). Ако имаш конкретен проблем, пусни код ;)

0
Woofles avatar Woofles 7 Точки

Проблемът ми накратко беше следният: Калкулатор, в който натискането на втори бутон [+,-,*,/] преди Enter, да изпълнява действията за Enter. Има малко условности в моя случай, заради повече полета и прехвърляне на резултати от едно в друго, но като цяло е това.
Да кажем че разбрах това което обясни :) Сигурен съм че няма да го запомня за дълго, но и за сега нямам нужда да си надхвърлям толкова нивото.
В известен смисъл това което правя е да делегирам права на MouseEventHandler да изпълни "събскрайбнатия" (+=) метод(и) при настъпването на даденото събитие (*.MouseClick в случая). Така ли? И освен това мога на един KeyPress евент да събскрайбна няколко метода (или един, но няколко пъти), чиито права за изпълнение да са делегирани на KeyPressEventHandler. Малко ми беше объркващо първоначално защо ще се ползва += щом от Properties не можем да зададем повече от един метод на евент.

Благодаря за препоръките и книгите, ще се опитам да се сдобия с някоя от тях. Сега се захванах с Minesweeper, но там просто няма да мине без сериозно четене :)

0
05/08/2016 19:02:55