Compact Framework: Показать диалог и выполнить код ПОСЛЕ формы показывает - PullRequest
0 голосов
/ 20 мая 2010

Работа в .NET Compact Framework, C #, .Net 3.5, Visual Studio 2008. Ориентация на устройства Windows Mobile и CE из одного проекта (это приложение CE, работает на обоих типах устройств).

У меня есть форма, которая должна отображаться с помощью ShowDialog. Сама форма представляет собой пустой экран с сообщением «загрузка ...». ПОСЛЕ ТОГО, КАК форма отображается на экране, мне нужно запустить еще один кусок кода в том же потоке, который вызовет другую форму, используя ShowDialog, так что экран «Загрузка» является родителем нового экрана.

не говорите мне, что этот сценарий неправильный, или я не должен использовать showdialog. Мы прошли через это как команда, и именно так мы пишем приложение, потому что оно решает значительное количество других проблем.

... проблема в этом сценарии, тем не менее, в том, что в компактном фреймворке нет объекта «Показано», поэтому я не могу выполнить свой обычный трюк, вставив код в это событие, чтобы сделать это.

как другие люди решают эту проблему в компактных рамках? если это поможет, у меня есть библиотека OpenNetCF ... есть ли что-то, что может помочь?

Ответы [ 2 ]

0 голосов
/ 15 июня 2010

закончил с помощью формы активации с логическим значением, чтобы проверить и посмотреть, сделал ли я работу или нет

0 голосов
/ 20 мая 2010

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

Ваше приложение вызывает Application.Run в какой-то момент. Это устанавливает насос сообщений, который отправляет события Windows в соответствующие Windows (элементы управления) в системе.

Когда вы вызываете ShowDialog, система настраивает другой временный насос сообщений. Это означает, что события Windows, поступающие в этот насос, не будут отправляться извне другим элементам управления (так вы получаете модальность).

Теперь вы говорите, что вам нужно выложить еще одно диалоговое окно поверх этого (таким образом, создав еще один насос), но вам нужно, чтобы оно появлялось после некоторого кода инициализации в первом диалоге (а не в общей родительской форме) был отображен.

Это все правильно? Если так, я думаю, что есть два пути, на которые я бы посмотрел. Сначала я бы посмотрел на переопределение OnActivation в первом диалоге. Поскольку вы используете ShowDialog, я думаю, что это было бы почти синонимом события Shown.

Если это не совсем то, что вы хотите, то я бы посмотрел на добавление MessageWindow в первый диалог (или использование NativeWindow SDF для его подкласса ) и посмотрите на все входящие сообщения Windows, чтобы предоставить ваше собственное событие Shown.

...