質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

1回答

9598閲覧

WPFアプリケーション C# 2つのウィンドウでのデータのやり取り

ghana

総合スコア18

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

0グッド

0クリップ

投稿2017/08/02 04:33

###前提・実現したいこと
・問題点
Visual StudioでC#とWPFを使ったアプリケーションを作っています。
そこで、2つのWindow間でのデータの受け渡しについて少してこずっています。
Window1からWindow2へのデータの受け渡しはできたのですが、同じ方法でWindow2からWindow1へのデータを返すところがうまくできなくて困っています。
Window1:立ち上げた時の最初の画面(ボタン)
Window2:画面遷移後の画面(テキストボックス、ボタン)

・実現したいもの
Window1は表示させたままWindow2を表示
Window2のボタンを押すとWindow2のtextBox内の文字列がWindow1に渡されてWindow2を閉じる

お手数をおかけしますがご教授お願いいたします。

###該当のソースコード
Window1

//Window1 public string Text1 {get; set;}//Window2からの受け取り用 //Window1からWindow2へのデータの受け渡し private void button_Click(object sender, RoutedEventArgs e) { var window = new Window2(); window.num2 = num1; window.Show(); }

Window2

//Windo2 public int num2 {get; set;} //Window1からの受け取り用 //Window2からWindow1へのデータの受け渡し private void button_Click(object sender, RoutedEventArgs e) { //上手く渡せていない部分 var window = new Window1(); window.Text1 = this.textBox.Text; this.Close(); }

###補足情報(言語/FW/ツール等のバージョンなど)
Visual Studio 2015 Visual C#のWPFアプリケーションを使用

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Window1

C#

1//Window1 2private void button_Click(object sender, RoutedEventArgs e) 3{ 4 var window = new Window2(this); 5 window.num2 = num1; 6 window.Show(); 7}

Window2

C#

1public int num2 {get; set;} //Window1からの受け取り用 2 3private Windo1 _window1 = null; 4public Window2(Window window1) 5{ 6 _window1 = window1 7} 8 9//Window2からWindow1へのデータの受け渡し 10private void button_Click(object sender, RoutedEventArgs e) 11{ 12 _window.Text1 = this.textBox.Text; 13 this.Close(); 14}

あなたの実装はWindow2で別のWindow1のインスタンスをnewしています。
Windows2を呼び出したときにWindow1のインスタンスをコンストラクタで渡してください。

プロパティで渡してもOKです。

またはClosedイベントにて対応することも可能です。

C#

1//Window1側 2//ただし window2のTextBoxがpublicで公開されている必要がある。 3 4var window = new Window2(); 5window.num2 = num1; 6window.Closed += (sender,args) => this.Text1 = window2.TextBox.text 7window.Show();

投稿2017/08/02 04:40

編集2017/08/02 05:02
Tak1016

総合スコア1408

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ghana

2017/08/02 05:27

ご指摘通りに実装してみたところ、思うようにデータの受け渡しができるようになりました。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問