2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Помогите решыть проблему!
Сообщение12.12.2011, 22:44 


27/08/11
36
Здравствуйте! Перейду сразу к делу. Есть у нас MDI-контейнер. У нево эсть дочерные форми. Вот код дочерных форм
Код:
using System;
...

namespace laba4
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        private void Form1_Load(object sender, EventArgs e)
        { }
        public void func()
        {
            FolderBrowserDialog myFolderDialog = new FolderBrowserDialog();
            if (myFolderDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                String sPath = myFolderDialog.SelectedPath.ToString();
                MessageBox.Show(sPath);
                recursiwalk.recursivwalk(sPath);
            }   
        }
        private void button1_Click(object sender, EventArgs e)
        {
            new Thread(func).Start();
            //func();
        }
    }
}

В форме есть кнопка при нажатии которой в потоке должна исполнятся функия func. Проблема заключаєтся в этом что когда функция исполняется в потоке то FolderBrowserDialog пуст и нету из чево вибирать. Но если запустить funk просто так то все ок. Помечу так? Помогите разобратяс в чем я ошибся.

 Профиль  
                  
 
 Re: Помогите решыть проблему!
Сообщение12.12.2011, 23:24 
Заслуженный участник


09/08/09
3438
С.Петербург
К управляющим элементам Windows.Forms можно обращаться только из потока, в котором они были созданы. Если возникает необходимость работать с контролом из другого потока, необходимо использовать метод Invoke.

Вот здесь почитайте: How to: Make Thread-Safe Calls to Windows Forms Controls (MSDN).

 Профиль  
                  
 
 Re: Помогите решыть проблему!
Сообщение12.12.2011, 23:28 


27/08/11
36
Спасибо!
З.Ы. здесь на форуме можна как-то плюсануть?

 Профиль  
                  
 
 Re: Помогите решыть проблему!
Сообщение12.12.2011, 23:31 
Заслуженный участник


09/08/09
3438
С.Петербург
Нет, здесь достаточно сказать "спасибо" :)

 Профиль  
                  
 
 Re: Помогите решыть проблему!
Сообщение13.12.2011, 15:06 


27/08/11
36
У меня тут еше один вопрос назрел. Вот хочу я зделать чтоб контроль ListView отображал содержание папки или диска. Путь к этой папке мы выбираем сами. Как зделать так чтоб около назв папок отображалась иконка папки(походу читал что ListView исполюзуется у Експлорере, значит это както возможно) а около назв файлов какая-то другая иконка?

 Профиль  
                  
 
 Re: Помогите решыть проблему!
Сообщение13.12.2011, 16:42 
Заслуженный участник


09/08/09
3438
С.Петербург
Картинки для каждого узла TreeView можно задать в конструкторе: TreeNode Constructor (String, Int32, Int32)

Ну и сюда загляните для общего образования: Walkthrough: Creating an Explorer Style Interface with the ListView and TreeView Controls Using the Designer

 Профиль  
                  
 
 Re: Помогите решыть проблему!
Сообщение29.12.2011, 21:15 


29/12/11
5
Кстати, а зачем вообще нужен дополнительный поток в первом вопросе?
Если только для вызова recursiwalk.recursivwalk, то гораздо проще открыть FolderBrowserDialog в основном потоке, а в новый поток передать только sPath и не заморачиваться с Invoke.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group