Создание формы, доступной через приложение - PullRequest
0 голосов
/ 26 июля 2011

В моем приложении для Windows VS-2008 я хочу показать всплывающую форму с индикатором выполнения.Класс, работающий в фоновом режиме, должен напрямую отправлять ему значения индикатора выполнения.Я хочу, чтобы эта Форма была доступна напрямую, введя ее имя, а не создавая экземпляры.

Если я установлю для свойства Accessible Role значение Dialog, он будет наверху и будет мешать работе пользователя.Я хочу, чтобы эта Форма запускалась в каком-то углу экрана и должна отображаться как дочерняя форма формы MDI, но должна быть доступна напрямую.

1 Ответ

2 голосов
/ 26 июля 2011

http://en.wikipedia.org/wiki/Singleton_pattern

Самый простой способ - сделать весь класс статическим и изменить все переменные и методы экземпляра на статические. Затем вы можете вызывать методы по имени класса, например MyFormClass.UpdateProgress(2);

Делать это таким образом некрасиво для некоторых людей (включая меня), которые предпочли бы, чтобы вы хранили где-то один нестатический экземпляр вашего класса и управляли доступом к нему через объект / метод управления. Я не уверен, насколько это мнение является правомерным в мире программирования на языке C #, не беспокоясь о реализации.

Также, если вы планируете обновить индикатор выполнения из фонового потока, имейте в виду, что winforms не являются потокобезопасными.

...