Записки программиста, обо всем и ни о чем. Но, наверное, больше профессионального.

2012-09-18

DoubleClick

Уже больше года у нас в конторе потихонечку развивается одна программулина на Silverlight. И вот, внезапно и вдруг, боссу захотелось выбирать элементы из списка даблкликом. Весь год он смотрел на стопицоттыщ списков и не обламывался нажимать кнопки «ОК». А тут вдруг моча в голову ударила захотел даблкликать.

Да и ладно бы, ерунда какая, если не думать о том, что теперь надо бы все списки оснастить такой опцией. Но не все так просто. Беспощадный Microsoft не захотел делать событие doubleclick для контрола ListBox в Silverlight. Не знаю и знать не хочу как дело обстоит с другими контролами, а вот ListBox не ловит событие doubleclick. Надо делать свой велосипед, первая мысль — присобачить таймер.

Не надо таймер, все гораздо проще. Смотрите
MouseLeftButtonUp += new MouseButtonEventHandler(onMLBUp);
...
private void onMLBUp(object sender, MouseButtonEventArgs e) {
    DateTime n = DateTime.Now;
    var delta = (n - lastMLBClick).TotalMilliseconds;
    lastMLBClick = n;

    if(delta < 500.0) {
        onOKButtonClick(sender, null);
    }
}
По каждому клику мы проверяем, как давно был предыдущий клик. И если не очень давно — делаем вид, что мы поймали doubleclick.

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

Комментариев нет:

Отправить комментарий

Архив блога

Ярлыки

linux (241) python (191) citation (186) web-develop (170) gov.ru (159) video (124) бытовуха (115) sysadm (100) GIS (97) Zope(Plone) (88) бурчалки (84) Book (83) programming (82) грабли (77) Fun (76) development (73) windsurfing (72) Microsoft (64) hiload (62) internet provider (57) opensource (57) security (57) опыт (55) movie (52) Wisdom (51) ML (47) driving (45) hardware (45) language (45) money (42) JS (41) curse (40) bigdata (39) DBMS (38) ArcGIS (34) history (31) PDA (30) howto (30) holyday (29) Google (27) Oracle (27) tourism (27) virtbox (27) health (26) vacation (24) AI (23) Autodesk (23) SQL (23) humor (23) Java (22) knowledge (22) translate (20) CSS (19) cheatsheet (19) hack (19) Apache (16) Klaipeda (15) Manager (15) web-browser (15) Никонов (15) functional programming (14) happiness (14) music (14) todo (14) PHP (13) course (13) scala (13) weapon (13) HTTP. Apache (12) SSH (12) frameworks (12) hero (12) im (12) settings (12) HTML (11) SciTE (11) USA (11) crypto (11) game (11) map (11) HTTPD (9) ODF (9) Photo (9) купи/продай (9) benchmark (8) documentation (8) 3D (7) CS (7) DNS (7) NoSQL (7) cloud (7) django (7) gun (7) matroska (7) telephony (7) Microsoft Office (6) VCS (6) bluetooth (6) pidgin (6) proxy (6) Donald Knuth (5) ETL (5) NVIDIA (5) Palanga (5) REST (5) bash (5) flash (5) keyboard (5) price (5) samba (5) CGI (4) LISP (4) RoR (4) cache (4) car (4) display (4) holywar (4) nginx (4) pistol (4) spark (4) xml (4) Лебедев (4) IDE (3) IE8 (3) J2EE (3) NTFS (3) RDP (3) holiday (3) mount (3) Гоблин (3) кухня (3) урюк (3) AMQP (2) ERP (2) IE7 (2) NAS (2) Naudoc (2) PDF (2) address (2) air (2) british (2) coffee (2) fitness (2) font (2) ftp (2) fuckup (2) messaging (2) notify (2) sharepoint (2) ssl/tls (2) stardict (2) tests (2) tunnel (2) udev (2) APT (1) Baltic (1) CRUD (1) Canyonlands (1) Cyprus (1) DVDShrink (1) Jabber (1) K9Copy (1) Matlab (1) Portugal (1) VBA (1) WD My Book (1) autoit (1) bike (1) cannabis (1) chat (1) concurrent (1) dbf (1) ext4 (1) idioten (1) join (1) krusader (1) license (1) life (1) migration (1) mindmap (1) navitel (1) pneumatic weapon (1) quiz (1) regexp (1) robot (1) science (1) seaside (1) serialization (1) shore (1) spatial (1) tie (1) vim (1) Науру (1) крысы (1) налоги (1) пианино (1)