2009-05-06 3 views
0

私はWPFを初めて使い、VC#Expressを使用して最初のWPFデスクトップアプリケーションを作成しようとしています。C#/ WPF:ファイルダイアログの参照を作成する

私は、ユーザーがファイルを選択した場合に、指定されたパスを示すテキストフィールドを含む3つのオープンファイルダイアログを作成しようとしています。ボタンをクリックしてダイアログボックスを表示させる作業コードが見つかりましたが、ファイルパスに更新/バインドするテキストフィールドを取得するにはどうすればよいですか?

HTMLのファイル入力ボックスと同じようなものが理想的でしょう。

...

EDIT:

今...私はちょうど私の下記の記事を読んで、解決策を見つけた

さて、どのようにテキストフィールドにコンソール出力をリダイレクトするでしょうか?

+0

コンソール出力をテキストボックスにリダイレクトする理由を教えてください。診断?ロギング? – flq

+1

別の質問で別の質問をしてください。 :) –

答えて

0

私はあなたを正しく理解しています [フルパス]にFileDialog.FileNameを使用し、テキストボックスにバインドします。コンソール出力をリダイレクトについてのあなたの質問に答えるために 76mel

1

あなたが出力したい文字列を使用してイベントを発生させるコードを変更したほうが良いでしょう。その後、UIでそのイベントのハンドラを追加し、ハンドラでテキストフィールドを更新します。 StringEventArgsを送信するためのメッセージをラップEventArgsに基づくクラスです

public event EventHandler<StringEventArgs> Process_Message; 

を:あなたの処理クラスでは、このようなコードを追加し、イベントを宣言する

あなたの処理クラスでは、このようなコードを追加するイベントを発射する:

Process_Message(this, new StringEventArgs(message)); 

をあなたのUIクラスでメッセージハンドラをアタッチするには:

process.Process_Message += Process_Message; 

はこのような何かを追加するイベントを処理するにはあなたのUIクラスのコード:

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; 
} 

明らかにあなたがあなたのアプリケーションに適切であるように、物事の名前を変更する必要があります。

MSDNのイベントを参照してください。EventArgs

関連する問題