|
folderBrowserDialog во второй форме
|
|||
---|---|---|---|
#18+
Всем, добрый день. Есть одна формочка, по кнопке открывается вторая формочка с кнопкой по которой надо открыть folderBrowserDialog. Появляется ошибка во время отладки: "Текущий поток должен быть задан как поток однопоточного контейнера (STA), чтобы вызовы OLE стали возможны. Проверьте, что ваша функция Main помечена атрибутом STAThreadAttribute. Данное исключение создается, только если к процессу подключен отладчик." Если запускать exe то открытый folderBrowserDialog не содержит дерево каталогов, нет возможности выбрать папку. Только нажать ОК или Отмена. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26.
Если для открытия folderBrowserDialog1 выделить поток, то вроде все хорошо. Но тогда я могу пооткрывать таких окошек н-ое количество, что не есть хорошо. Код: c# 1. 2. 3. 4. 5. 6. 7. 8.
Может кто знает нормальный способ это сделать? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2014, 08:35 |
|
folderBrowserDialog во второй форме
|
|||
---|---|---|---|
#18+
Пока остановился, добавил t.Join(); теперь хоть 5 окошек выбора папки открыть нельзя. Но если открыть одно окно выбора папки и пока оно открыто понажимать на кнопку открытия данного окна, то после нажатия вокне выбора папок "ОК", данное окно откроется снова столько же раз сколько вы нажимали на кнопку его открытия. Что мне кажется не особо верным. Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17.
... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2014, 10:27 |
|
folderBrowserDialog во второй форме
|
|||
---|---|---|---|
#18+
INFINITsМожет кто знает нормальный способ это сделать? Открывать в разных потоках формы - это не верно в принципе. Может у вас просто настройки перед запуском диалога не верны? Зачем вы пытаетесь сразу дать диалоговому окну какой-то каталог? ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2014, 16:48 |
|
folderBrowserDialog во второй форме
|
|||
---|---|---|---|
#18+
INFINITs, Код: c# 1. 2. 3.
Вот например... все видно, все листается.... ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2014, 16:52 |
|
folderBrowserDialog во второй форме
|
|||
---|---|---|---|
#18+
INFINITs, приведенный в первом сообщении код работает у меня без ошибок. У тебя точно больше нет потоков в приложении? Может ты используешь System.Threading.Timer который создает собственный поток или что-то еще. D129Зачем вы пытаетесь сразу дать диалоговому окну какой-то каталог? Для удобства пользователя, видимо, чтобы сразу попадать в ранее выбранный каталог. ... |
|||
:
Нравится:
Не нравится:
|
|||
12.02.2014, 17:57 |
|
folderBrowserDialog во второй форме
|
|||
---|---|---|---|
#18+
D129 Может у вас просто настройки перед запуском диалога не верны? Зачем вы пытаетесь сразу дать диалоговому окну какой-то каталог? Какие настройки могут быть неверны? Как сказал, bazile , это для удобства пользователя. Ради интереса удалил не помогло. bazileINFINITs, приведенный в первом сообщении код работает у меня без ошибок. У тебя точно больше нет потоков в приложении? Может ты используешь System.Threading.Timer который создает собственный поток или что-то еще. На форме есть компонента System.Threading.Timer, но сам таймер не запущен. Впринципе удалил для теста компоненту не помогло. Беглый просмотр инета говорит, что для открытия второй формы в диалоговом формате, выделяется еще один поток и из-за этого потом я не могу открыть на ней folderBrowserDialog. Если кинуть folderBrowserDialog на основную форму, то все ок. Открывается и просматривается. Не могу именно открыть на второй форме. Пробывал форму открывать как не модальную, а обыкновенную не помогло. Есть ли какие-нибудь настройки перед открытием второй формы? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2014, 01:50 |
|
folderBrowserDialog во второй форме
|
|||
---|---|---|---|
#18+
INFINITs, ты точно что-то не так делаешь. Смотри присоединенный пример. FolderBrowserDialog без всяких проблем работает в другой форме. Для удобства в заголовке обоих форм выводится ManagedThreadId текущего потока и общее кол-во потоков в приложении. Попробуй у себя запустить. INFINITsБеглый просмотр инета говорит, что для открытия второй формы в диалоговом формате, выделяется еще один поток и из-за этого потом я не могу открыть на ней folderBrowserDialog. Это не так. INFINITsЕсть ли какие-нибудь настройки перед открытием второй формы? Нет никаких особых настроек. Должно работать сразу. Может ты COM компоненты какие-то используешь или сторонние элементы управления? Похоже кто-то в твоем приложении создает новый поток и код запуска второй формы идет именно в нем, а не в UI-потоке. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2014, 02:59 |
|
folderBrowserDialog во второй форме
|
|||
---|---|---|---|
#18+
bazile INFINITs, ты точно что-то не так делаешь. Смотри присоединенный пример. FolderBrowserDialog без всяких проблем работает в другой форме. Для удобства в заголовке обоих форм выводится ManagedThreadId текущего потока и общее кол-во потоков в приложении. Попробуй у себя запустить. Посмотрел, запустил, запустился. Создал свой пустой проект, все отработало. Чуть позже попробую, посмотреть кто у меня создает еще один поток. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2014, 03:56 |
|
folderBrowserDialog во второй форме
|
|||
---|---|---|---|
#18+
Всем спасибо за внимание. Вообщем, как всегда я натупил, пора отдохнуть) Косяк был в Program.cs Код: c# 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
После того как перенес его над Main() все заработало ) Хотя почему я думал [STAThread] должен был отработать, надо будет перечитать мануал. И наверное надо будет казнить InitParametrPO(), перенести в загрузку формы. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2014, 04:49 |
|
folderBrowserDialog во второй форме
|
|||
---|---|---|---|
#18+
INFINITs, [STAThread] должен применться к точке входа программы, то есть к функции Main. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.02.2014, 08:58 |
|
|
start [/forum/topic.php?fid=20&msg=38559247&tid=1403280]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
52ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 340ms |
total: | 489ms |
0 / 0 |