Утро всем,
Я разрабатываю несколько приложений для компактных фреймворков, и что-то, что всегда ускользает от меня, - это способ предотвратить то, что мы называем синдромом йоркширского банка (ybs). YBS назван с любовью в честь наличных в Yorkshire Bank из-за того, что их обновление экрана происходит так медленно, и один из моих коллег дважды нажал кнопку, думая, что он не нажал кнопку, и в итоге получил 100 фунтов вместо требуемые 20 фунтов стерлингов (кнопки «Наличные без квитанции» и «100 фунтов стерлингов» были назначены одной и той же кнопке на двух разных экранах).
По сути, я загружаю все свои формы с заставкой в начале приложения, и у каждой другой формы есть открытое событие Initialise (). Чтобы показать форму, я использовал Session.Instances.FormName.Initialise (), затем сделал showdialog ().
Метод Initialise () обычно вызывает некоторый сброс формы или загрузку данных, поэтому, в свою очередь, Cursor также устанавливается в этом методе. Проблема возникает, когда пользователь нажимает кнопку, чтобы показать форму, форма загружается, но если они щелкают по экрану в то же время, этот щелчок экрана передается в форму, которая в данный момент загружается (но не отображается).
Например, я нажимаю кнопку, чтобы показать форму, а затем щелкаю в левом нижнем углу экрана. В большинстве моих CF-приложений кнопка в правом нижнем углу - это кнопка «Назад», которая устанавливает DialogResult.Cancel. Таким образом, после завершения загрузки форма не отображается при нажатии кнопки «Назад», хотя форма так и не была отображена.
Я пробовал несколько вещей, включая this.Enabled = false в начале Initialise (), но кажется, что щелчок сохраняется в фоновом режиме, а затем событие щелчка запускается на экран, когда загрузка имеет завершено.
Итак, теперь мне интересно, есть ли способ запретить любой ввод мышью во время загрузки и включить его только перед моим Form.ShowDialog ()? ИЛИ у кого-нибудь есть лучшие идеи, как этого добиться?