0

私は WPF が初めてで、VC# Express を使用して最初の WPF デスクトップ アプリケーションを作成しようとしています。

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

HTML のファイル入力ボックスがどのように機能するかに似たものが理想的です。

...

編集:

さて、私のすぐ下の投稿を読んで解決策を見つけました...

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

4

2 に答える 2

1

コンソール出力のリダイレクトに関する質問に答えるには:

出力したい文字列でイベントを発生させるようにコードを変更したほうがよいでしょう。次に、UIでそのイベントのハンドラーを追加し、ハンドラーでテキストフィールドを更新します。

イベントを宣言するには、処理クラスに次のようなコードを追加します。

public event EventHandler<StringEventArgs> Process_Message;

ここで、は送信するメッセージをラップするStringEventArgsベースのクラスです。EventArgs

イベントを発生させるには、処理クラスに次のようなコードを追加します。

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

UIは別のスレッドから更新できないため、スレッドテストを実行する必要があります。

次に、UpdateStatusメソッド:

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

もちろん、アプリケーションに合わせて名前を変更する必要があります。

イベントとEventArgsMSDNを検索します。

于 2009-05-06T13:05:28.450 に答える
0

私があなたを正しく理解していれば、FileDialog.FileNameをフルパスに使用し、それをテキストボックスにバインドします。76メル

于 2009-05-06T12:47:09.883 に答える