Уже больше
года у нас в конторе потихонечку
развивается одна программулина на
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.
Я проблему
вижу только одну, интервал даблклика
не регулируется через системные
настройки. По уму надо бы похерить
убогий Сильверлайт считывать
интервал из реестра системных настроек.
Комментариев нет:
Отправить комментарий