powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Открытие формы. Событие после отрисовки. Как поймать?
15 сообщений из 15, страница 1 из 1
Открытие формы. Событие после отрисовки. Как поймать?
    #32859504
M234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне нужно выполнить ряд действий ПОСЛЕ того как форма была ПОЛНОСТЬЮ загружена и отрисована.
Поэтому событие Form2_Load не подходит.
Как тогда узнать что форма отрисована?
-------------------------------------------------------------------------
Нет худа без добра, да и добро без худа - чудо.
...
Рейтинг: 0 / 0
Открытие формы. Событие после отрисовки. Как поймать?
    #32859583
Dats
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть утилита - SPY ++
С помощью ее и можно узнать какое событие происходит после отрисовки.
Ну и на него обработчик повесь.
...
Рейтинг: 0 / 0
Открытие формы. Событие после отрисовки. Как поймать?
    #32859636
M234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DatsЕсть утилита - SPY ++
С помощью ее и можно узнать какое событие происходит после отрисовки.
Ну и на него обработчик повесь.


Спасибо, НО:

У меня её нет.
И пользоваться я ей не умею.
И в гугле всякая чушь лезет в ответ на запрос SPY ++.
И времени в обрез.
Потому и спрашиваю.
Может кто сталкивался и знает....
...
Рейтинг: 0 / 0
Открытие формы. Событие после отрисовки. Как поймать?
    #32860867
Фотография Roman S. Golubin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может так?:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
protected override void OnPaint(
   PaintEventArgs e
){
  base.OnPaint(e);
  PaintDone();
}

private void PaintDone(){
  // Форма прорисована - делаем что хотим. 
  // но гарантировать, что в момент выполнения обработки
  // форма снова не будет перерисована ни кто не может...
}

Хотя, на сам деле, сам вопрос не корректно поставлен - что бы форма была ВСЯ отрисована имхо узнать достаточно проблематично - только если пересечения отрисованных регионов считать и сравнивать с областью, которая должна быть видимой на экране.
В реальной жизни чаще всего видна только часть окна :-)

--
Удачи, Роман С. Голубин
...
Рейтинг: 0 / 0
Открытие формы. Событие после отрисовки. Как поймать?
    #32860885
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman S. Golubin
...
private void PaintDone(){
// Форма прорисована - делаем что хотим.
...

ИМХО опасно делать все что хотим, можно заставить форму все время перерисовываться.

2 M234
Как то задача не ясно поставлена, что же вы хотите такое сделать
...
Рейтинг: 0 / 0
Открытие формы. Событие после отрисовки. Как поймать?
    #32860949
Фотография Roman S. Golubin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SaИМХО опасно делать все что хотим, можно заставить форму все время перерисовываться.
Предполагается, что M234 понимает что он хочет делать.
...
Рейтинг: 0 / 0
Открытие формы. Событие после отрисовки. Как поймать?
    #32860980
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Roman S. GolubinПредполагается, что M234 понимает что он хочет делать.
:-)

Мне кажется есть другой подход к этой задаче - только надо знать постановку.

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Открытие формы. Событие после отрисовки. Как поймать?
    #32862824
M234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SaКак то задача не ясно поставлена, что же вы хотите такое сделать

Предпологается, что я знаю что хочу сделать.
Не предполагатся, что Вы это знаете так же как я.

Поясняю откуда ноги ростут у вопроса:

Есть две формы одинаковых размеров . Место появления форм - центр экрана.
На первой форме есть кнопка (помимо всего прочего) при нажатии которой должна появится форма2 f2.ShowDialog(this); Форма1 должна быть спрятана (visible = false) сразу же после появления формы2 . На первый взгляд ничего сложного.
Проблема: Получалось так, что после нажатия на кнопку на Ф1 она исчезала и 10 - 15 секунд на экране было пусто после чего появлялась Ф2. Такой "закидон" может испугать даже опытного пользователя. Причина: Форма2 сильно нагружена различными контролами, в том числе АктивеХ элементом, который и создаёт проблему. Покаааа он из библиотеки подгрузится.....
Хотелось бы, что бы Ф1 исчезала ТОЛЬКО после появления Ф2, что бы не пугать юзверя. Я этого добился в итоге вставкой visible = false для Ф1 в одной из процеду Ф2 которая исполняется "не в первых рядах". Теперь стало чуть-чуть лучше. НО появилась проблема2 : Нажимаем на кнопку на Ф1 и...... ждём, ждём, ждём.... через 10 -15 секунд исчезает Ф1 и появляется Ф2. Т.е. имеем эффект "зависания". Пауза в 10 - 15 сек. между нажатием на кнопку на Ф1 и появлением Ф2 меня тоже не радует....

Как бы заставить АктивеХ элемент быстрее грузится?
...
Рейтинг: 0 / 0
Открытие формы. Событие после отрисовки. Как поймать?
    #32862859
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
С ActiveX не помогу,
нтересует код клика кнопки на первой форме.

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Открытие формы. Событие после отрисовки. Как поймать?
    #32862872
M234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SaС ActiveX не помогу,
нтересует код клика кнопки на первой форме.

Код: plaintext
 uid  =  S a


Form2 va = new Form2();
va.ShowDialog(this);

А затем в форме2:

private void Form2_Load(object sender, System.EventArgs e)
{
this.Procedure1();
this.Procedure2();
this.Owner.Visible = false;
}
...
Рейтинг: 0 / 0
Открытие формы. Событие после отрисовки. Как поймать?
    #32862980
Фотография Лиман Артём
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если
Код: plaintext
1.
2.
his.Procedure1();
this.Procedure2();
выполняются долго, то их можна было вызвать асинхронно, либо вообще в другой поток засунуть...
...
Рейтинг: 0 / 0
Открытие формы. Событие после отрисовки. Как поймать?
    #32862993
M234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Лиман Артёмесли
Код: plaintext
1.
2.
his.Procedure1();
this.Procedure2();
выполняются долго, то их можна было вызвать асинхронно, либо вообще в другой поток засунуть...

Нет, важна последовательность. Главное для меня было то, что после их выполнения Ф2 уже точно появилось и можно скрывать Ф1.
...
Рейтинг: 0 / 0
Открытие формы. Событие после отрисовки. Как поймать?
    #32863178
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понял, что вы создаете экземпляр класса формы2. А если создать его заранее, например при загрузки приложения и показа spashscreen'а

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Открытие формы. Событие после отрисовки. Как поймать?
    #32863186
M234
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SaПонял, что вы создаете экземпляр класса формы2. А если создать его заранее, например при загрузки приложения и показа spashscreen'а

Код: plaintext
 uid  =  S a


Идея мне нравится !
Вопрос: Как это лучше сделать?
...
Рейтинг: 0 / 0
Открытие формы. Событие после отрисовки. Как поймать?
    #32863227
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вопрос: Как это лучше сделать?

Для этого надо понять логику работы программы.

Что представляет собой форма1 и форма2?
Есть ли заставка (при запуске приложения aka spalshscreen)?
Код вызова заставки (если она есть)?

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / Открытие формы. Событие после отрисовки. Как поймать?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]