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


Спасибо, НО:

У меня её нет.
И пользоваться я ей не умею.
И в гугле всякая чушь лезет в ответ на запрос SPY ++.
И времени в обрез.
Потому и спрашиваю.
Может кто сталкивался и знает....
...
Рейтинг: 0 / 0
12.01.2005, 12:32
    #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
12.01.2005, 12:41
    #32860885
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие формы. Событие после отрисовки. Как поймать?
Roman S. Golubin
...
private void PaintDone(){
// Форма прорисована - делаем что хотим.
...

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

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

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

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
13.01.2005, 11:54
    #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
13.01.2005, 12:04
    #32862859
Sa
Sa
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие формы. Событие после отрисовки. Как поймать?
С ActiveX не помогу,
нтересует код клика кнопки на первой форме.

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
13.01.2005, 12:09
    #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
13.01.2005, 12:38
    #32862980
Лиман Артём
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие формы. Событие после отрисовки. Как поймать?
если
Код: plaintext
1.
2.
his.Procedure1();
this.Procedure2();
выполняются долго, то их можна было вызвать асинхронно, либо вообще в другой поток засунуть...
...
Рейтинг: 0 / 0
13.01.2005, 12:43
    #32862993
M234
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Открытие формы. Событие после отрисовки. Как поймать?
Лиман Артёмесли
Код: plaintext
1.
2.
his.Procedure1();
this.Procedure2();
выполняются долго, то их можна было вызвать асинхронно, либо вообще в другой поток засунуть...

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

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

Код: plaintext
 uid  =  S a


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

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

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

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


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