Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
из одной формы в другую
|
|||
|---|---|---|---|
|
#18+
Работа с Windows.Forms хочется из первой формы открыть вторую из второй запустить процедуру и чтобы ход выполнения отображался в контроле на второй форме (например обработано х - элементов) если сделать так Form2 f3=new Form2(); f3.ShowDialog(); f3. AutoImport(); форма появляется и процедура то же выполняется но вот ход выполнения не отображается на форме. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2004, 11:35 |
|
||
|
из одной формы в другую
|
|||
|---|---|---|---|
|
#18+
А если так: Form2 f3=new Form2(); f3.AutoImport(); где public class Form2 : System.Windows.Forms.Form { public void AutoImport() { /*some code here*/ this.ShowDialog(); } } ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2004, 11:40 |
|
||
|
из одной формы в другую
|
|||
|---|---|---|---|
|
#18+
пробовал вставлять внутрь AutoImport() { this.ShowDialog(); // } та же петрушка все равно на форме не отображается результаты ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2004, 11:48 |
|
||
|
из одной формы в другую
|
|||
|---|---|---|---|
|
#18+
А как происходит вывод результатов выполнения? Может быть дело в самом выводе? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2004, 11:55 |
|
||
|
из одной формы в другую
|
|||
|---|---|---|---|
|
#18+
не знаю все дело в том что если запустить с кнопки на форме то все работает нормально,а если скажем удаленно то нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2004, 12:00 |
|
||
|
из одной формы в другую
|
|||
|---|---|---|---|
|
#18+
О какизх резултаттах идет речь и где вы ставите в коде ShowDialog В данном примере я бросил на форму лейбл, присвоил ему текст и в результате текст отобразился. public void AutoImport() { label1.Text="SomeText"; this.ShowDialog(); } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2004, 12:00 |
|
||
|
из одной формы в другую
|
|||
|---|---|---|---|
|
#18+
я понимаю так что сначала должна появиться форма потом запускается сам процесс скажем так и уже на этой форме должно происходить отображение открытие второй формы из первой Form2 f3=new Form2(); f3.AutoImport(); где public class Form2 : System.Windows.Forms.Form { public void AutoImport() { /*some code here*/ this.ShowDialog(); this.label1.text=отображаемый текст. } } я сейчас не могу проверить но вроде бы так тоже не работало. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2004, 12:05 |
|
||
|
из одной формы в другую
|
|||
|---|---|---|---|
|
#18+
this.ShowDialog(); this.label1.text=отображаемый текст. Так и не будет работать Перепутано местами надо так : this.label1.text="отображаемый текст"; this.ShowDialog(); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2004, 12:09 |
|
||
|
из одной формы в другую
|
|||
|---|---|---|---|
|
#18+
а если это в цикле то тогда так что ли while (1=1) { "отображаемый текст"=вычисления; this.label1.text="отображаемый текст"; this.ShowDialog(); } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2004, 12:15 |
|
||
|
из одной формы в другую
|
|||
|---|---|---|---|
|
#18+
Думаю проблема в следующем: в первом варианте, где Код: plaintext 1. 2. во втором варианте, где Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Но если вывод не сохраняется на экране, то и показано не будет ничего. Замени ShowDialog() на Show() и посмотри, как все будет работать, а потом в MSDN и изучать, изучать, изучать, как завещал... ну ты понял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2004, 12:15 |
|
||
|
из одной формы в другую
|
|||
|---|---|---|---|
|
#18+
А например так вас не устроит (имитация цикла): public void AutoImport() { this.Show(); for(int i=0;i<1000;i++) { label1.Text="SomeText "+i.ToString(); System.Windows.Forms.Application.DoEvents(); } //по желанию можно поставить this.Close(); } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2004, 12:40 |
|
||
|
из одной формы в другую
|
|||
|---|---|---|---|
|
#18+
ok попробую а это что такое (System.Windows.Forms.Application.DoEvents();) цикл событий какой то что ли ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2004, 12:45 |
|
||
|
из одной формы в другую
|
|||
|---|---|---|---|
|
#18+
а это что такое (System.Windows.Forms.Application.DoEvents();) цикл событий какой то что ли Processes all Windows messages currently in the message queue. Подробнее - MSDN ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2004, 12:48 |
|
||
|
из одной формы в другую
|
|||
|---|---|---|---|
|
#18+
Метод которым я пользуюсь: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Удачи. Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2004, 13:34 |
|
||
|
из одной формы в другую
|
|||
|---|---|---|---|
|
#18+
Ну вы намутили ... Полезли в обработчик событий, а он вам и на пса не сдался. ShowDialog() - выводит модальное окно, пока оно не закроется первая форма будет блокирована. Все управление с этого момента передано во вторую форму. И все там работает приотлично - не понимаю как вы это пишете. А this.Update() не забыли??? во второй форме как только результат выводите??? ... вывод результата; this.Update(); ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2004, 14:08 |
|
||
|
из одной формы в другую
|
|||
|---|---|---|---|
|
#18+
я делал в цикле чтото типа с refresh(),но наверное обновлял контрол а не форму. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2004, 14:19 |
|
||
|
из одной формы в другую
|
|||
|---|---|---|---|
|
#18+
Magnus23Метод которым я пользуюсь: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Удачи. Magnus не все понятно попробую этот вариант если с this.update не прокатит ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2004, 14:24 |
|
||
|
из одной формы в другую
|
|||
|---|---|---|---|
|
#18+
SiriosНу вы намутили ... Полезли в обработчик событий, а он вам и на пса не сдался. ShowDialog() - выводит модальное окно, пока оно не закроется первая форма будет блокирована. Все управление с этого момента передано во вторую форму. И все там работает приотлично - не понимаю как вы это пишете. А this.Update() не забыли??? во второй форме как только результат выводите??? ... вывод результата; this.Update(); ... Что значит "намутили"? Стандартный метод передачи событий из одного класса другому. 2 wait Может быть я не совсем верно понял вопрос. Прогресс выполнения процедуры в подчиненной форме должен быть виден на ней же или на основной? Мой вариант выводит прогресс на основной, думал это и нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2004, 14:36 |
|
||
|
из одной формы в другую
|
|||
|---|---|---|---|
|
#18+
смысл такой стартует приложение, если с некоторым параметром типа "i" то должна появится вторая форма поверх первой в ней запуститься процедура, результат (ход выполнения должен быть виден в подчинённой форме т.е. второй ) потом если все ок вторая форма т.е. подчиненная закрывается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2004, 14:54 |
|
||
|
из одной формы в другую
|
|||
|---|---|---|---|
|
#18+
В таком случае достаточно будет в прпоцедуре проставить this.Refresh() private void button1_Click(object sender, System.EventArgs e) { Form2 f= new Form2(); f.Show(); } private void work(){ for(int i=0;i<=1000000;i++){ this.Refresh(); label1.Text="Progress " + i; } } private void Form2_Activated(object sender, System.EventArgs e) { work(); } Примерно так. Проверил. Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2004, 15:13 |
|
||
|
из одной формы в другую
|
|||
|---|---|---|---|
|
#18+
SiriosНу вы намутили ... ... Никто не мутил!!!! Magnus23 показал объектный подход решения задачи для обновления основного окна если не ставить Application.DoEvents() то ваше окно не будет принимать внешних событий до окончания цикла - попробуйте закомментировать эту строчку и например попытаться переместить окно..... Вообщем, как правильно говорит member Sa [\B] каждое решение имеет право на жизнь, если оно удовлетворяет конечной задаче (возможно я не правильно цитирую , да простит меня автор этих строк :-))))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2004, 15:13 |
|
||
|
из одной формы в другую
|
|||
|---|---|---|---|
|
#18+
2 vooo А зачем второй форме принимать события во время выполнения процедуры (разве что экстренного закрытия)? Вопрос ведь, не в этом был. А модальное окно - оно и есть модальное - сделало свое дело и закрылось и делегаты вооще не нужны, а если еще нужно во второй форме использовать процедуры первой, то в конструкторе void Form2(Form1 fm1); нужно получить ссылку на первую форму: Form2 f3 = new Form2(this); и пожалуйста общайтесь с двумя, не смотря что первая заблокирована. В случае с принятием событий во время выполнения процедуры, я согласен, но это другой вопрос. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2004, 15:45 |
|
||
|
из одной формы в другую
|
|||
|---|---|---|---|
|
#18+
2 Sirios Да ладно уже меня пинать :) Мне почему то показалось что прогресс нужен в первой форме, обычно подобные вопросы задаются именно в этом ключе. В своей-то форме проблем нет... Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2004, 16:11 |
|
||
|
из одной формы в другую
|
|||
|---|---|---|---|
|
#18+
2 Magnus23 Да ладно, братан, без обид. Я сам только учусь, многих слушаю, читаю. А теперь я вижу у кого по делегатам можно консультироваться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2004, 16:19 |
|
||
|
из одной формы в другую
|
|||
|---|---|---|---|
|
#18+
Magnus23В своей-то форме проблем нет... Magnus Есть... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Если в форме2 в цикле стоит DoEvents(), то окно ведёт себя как самостоятельное и фокус гуляет где хочет в том числе можно и на форму1 уйти. А ведь по идее нельзя! ( f2.ShowDialog(); ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2004, 16:23 |
|
||
|
из одной формы в другую
|
|||
|---|---|---|---|
|
#18+
А зачем Doevents? Я же говорю :this.Refresh(); Сам только что проверял. Прогресс чудно выводится. Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2004, 17:32 |
|
||
|
из одной формы в другую
|
|||
|---|---|---|---|
|
#18+
Magnus23А зачем Doevents? Я же говорю :this.Refresh(); Сам только что проверял. Прогресс чудно выводится. Magnus Вопервых совсем не чудно, а мелькает как сумашедший. Во вторых дочерняя форма (форма2) виснит на время работы цикла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2004, 18:05 |
|
||
|
из одной формы в другую
|
|||
|---|---|---|---|
|
#18+
Мелькает? Так его что замедлить нужно? :) Виснет оно и понятно. А что ты хочешь делать в это время? Если нужно разрешить еще какие то операции, то в принципе верным методом было бы, для этой долгой отстраненной процедуры, открыть отдельный тред и пусть в нем крутится. О завершении отрапортует событием. Magnus ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2004, 18:58 |
|
||
|
из одной формы в другую
|
|||
|---|---|---|---|
|
#18+
Внесу свои три копейки в общее дело :-) 1) refresh не нужен, будет сильно страдать производительность такого цикла, и как правильно заметил M234 форма 2 не будет принимать события во время цикла, и не хороший эффект напрочь убьет у пользователя желания запускать этот процесс следующий раз 2) можно обойдись и без multithreading 3) Обязательна должна быть возможность остановить длинный цикл, по крайне мере я всегда в начале нажимаю кнопку, а потом соображаю что запустил что то нехорошее, в общем "защита от дурака". Таким образом должна появиться кнопка "ОТМЕНИТЬ" на форме 2 . Поэтому без System.Windows.Forms.Application.DoEvents не обойтись M234 Если в форме2 в цикле стоит DoEvents(), то окно ведёт себя как самостоятельное и фокус гуляет где хочет в том числе можно и на форму1 уйти. А ведь по идее нельзя! ( f2.ShowDialog(); ) Я думаю надо дать форме нормально активироваться и запускать в Form2_Activated не длинный процесс work() , а таймер который срабатывает например через 0.1 секунду, запуская work и отрубая себя навсегда. Тогда проблема должна быть решена: у нас будет модальная форма, возможность отменить длинный цикл, и сам выполняющийся длинный цикл. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.07.2004, 22:01 |
|
||
|
из одной формы в другую
|
|||
|---|---|---|---|
|
#18+
SaЯ думаю надо дать форме нормально активироваться и запускать в Form2_Activated не длинный процесс work() , а таймер который срабатывает например через 0.1 секунду, запуская work и отрубая себя навсегда. Тогда проблема должна быть решена: у нас будет модальная форма, возможность отменить длинный цикл, и сам выполняющийся длинный цикл. Код: plaintext Уважаемый Sa, код с таймером пожалуйста в студию ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2004, 08:53 |
|
||
|
из одной формы в другую
|
|||
|---|---|---|---|
|
#18+
Ну там же все вроде как тривиально, ладно сейчас накатаю. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2004, 09:01 |
|
||
|
из одной формы в другую
|
|||
|---|---|---|---|
|
#18+
SaНу там же все вроде как тривиально, ладно сейчас накатаю. Код: plaintext Да просто никогда с таймером не игрался, а в данный момент времени нет, хотелось бы просто увидить примерчик, на всякий случай. А случаи они же разные бывають :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2004, 09:21 |
|
||
|
из одной формы в другую
|
|||
|---|---|---|---|
|
#18+
См. прикрепленный файл. Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2004, 09:28 |
|
||
|
из одной формы в другую
|
|||
|---|---|---|---|
|
#18+
Спасибо, это то, что надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.07.2004, 11:05 |
|
||
|
|

start [/forum/topic.php?all=1&fid=20&tid=1438745]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
61ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 252ms |
| total: | 417ms |

| 0 / 0 |
