Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

C#. Изменения на форме после наступления события

3.3K
07 ноября 2006 года
clown
26 / / 31.05.2004
Помогите кто-нибудь с проблемой:
Изначально на форме создается невидимая кнопка, после наступления определенного события вызывается функция в которой Visible кнопки меняется на true, но почему-то ее все равно не видно... никаких ошибок не выскакивает, в дебаггере по шагом тоже все вроде как надо... Из-за чего это может быть?
22K
07 ноября 2006 года
Melnosta
7 / / 07.11.2006
Как именно создается кнопка? В дизайнере или на горячую в процессе работы программы? Может быть ты забыл добавить кнопку к контролам? Попробуй в объекте формы написать this.Controls.Add(button).
3.3K
07 ноября 2006 года
clown
26 / / 31.05.2004
кнопка создается в дизайнере.
забыл сказать если функция которая меняет visible вызывается не из этого события а по нажатию другой кнопки, то все работает нормально...
22K
07 ноября 2006 года
Melnosta
7 / / 07.11.2006
можно подробностей побольше =)))
что за событие и откуда оно приходит?
invalidate() вызывал для формы?
3.3K
08 ноября 2006 года
clown
26 / / 31.05.2004
Вначале в классе главной формы вызывается функция checkComponents() которая проверяет 2 установленных компонента в системе, если компоненты установлены происходит присвоение buttonNext.Visible = true; если не установлены то вызывается процесс Thread t = new Thread(newhreadStart(ThreadCompInst.ThreadCIStart)); t.Start(); который устанавливает данные компоненты, когда установка завершена - вызывается событие о завершении установки которое в свою очередь опять вызывает checkComponents() - и здесь уже изменение buttonNext.Visible = true; не влияет на кнопку. Могу привести код но он большой...

invalidate() пока не вызывал
22K
08 ноября 2006 года
Melnosta
7 / / 07.11.2006
Насколько я понимаю, ты пытаешься управлять видимостью кнопки из потока. Такая штука непосредственно из потока у тебя не пройдет, т.к. формс контролы не thread-safe. Тебе следует воспользоваться какими-нибудь промежуточными методами для синхронизации потоков (отмаршалить) =)

Попробуй написать в потоке что-нибудь вроде
 
Код:
MethodInvoker mi = new MethodInvoker(this.checkComponents);
this.BeginInvoke(mi);
3.3K
08 ноября 2006 года
clown
26 / / 31.05.2004
спасибо!:) попробую
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог