2009-05-06 5 views
0

Я новичок в WPF и пытаюсь создать свое первое настольное приложение WPF с помощью VC# Express.C#/WPF: Сделайте обзор для диалога с файлом

Я пытаюсь сделать три открытых диалоговых окна с текстовыми полями, которые показывают указанный путь, если пользователь выбирает файл. Я нашел рабочий код, чтобы диалоговое окно отображалось одним нажатием кнопки, но как получить текстовое поле для обновления/привязки к пути к файлу?

Нечто похожее на то, как поля ввода файлов в работе HTML были бы идеальными.

...

EDIT:

Хорошо я прочитал пост чуть ниже шахты и нашел решение ...

Теперь, как о перенаправлении вывода консоли в текстовом поле?

+0

Почему вы хотите перенаправить вывод консоли в текстовое поле? Диагностика? Логирование? – flq

+1

Пожалуйста, задавайте разные вопросы в другом вопросе. :) –

ответ

0

Если вы правильно поняли Используйте FileDialog.FileName для полного пути .. и привяжите его к текстовому полю. 76mel

1

Чтобы ответить на вопрос о перенаправлении вывода консоли:

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

Чтобы объявить событие добавить что-то вроде этого кода в классе обработки:

public event EventHandler<StringEventArgs> Process_Message; 

где StringEventArgs класс основан на EventArgs, который оборачивает сообщение для отправки.

Чтобы запустить событие добавить что-то вроде этого кода в классе обработки:

Process_Message(this, new StringEventArgs(message)); 

Чтобы прикрепить обработчик сообщений в вашем классе UI:

process.Process_Message += Process_Message; 

Для обработки события добавить что-то вроде этого код вашего пользовательского интерфейса:

private void Process_Message(object sender, StringEventArgs e) 
{ 
    Action action =() => UpdateStatus(e.Message); 
    { 
     Dispatcher.Invoke(System.Windows.Threading.DispatcherPriority.Normal, action); 
    } 
    else 
    { 
      action(); 
    }   
} 

Вам необходимо выполнить проверку резьбы как U Я не могу обновляться из другого потока.

Тогда UpdateStatus метод:

private void UpdateStatus(string message) 
{ 
    statusTextBox.Text = message; 
} 

Очевидно, что вам нужно переименовать вещи, чтобы соответствовать вашему приложению.

Поиск событий и EventArgs в MSDN.