質問するログイン新規登録

回答編集履歴

4

Maincodeの宣言を修正

2017/11/28 06:13

投稿

umyu
umyu

スコア5846

answer CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  Window.xaml.cs
5
5
  ```C#
6
- private readonly Maincode;
6
+ private readonly Maincode maincode;
7
7
  public MainWindow()
8
8
  {
9
9
  InitializeComponent();

3

補足情報を整理

2017/11/28 06:13

投稿

umyu
umyu

スコア5846

answer CHANGED
@@ -32,9 +32,6 @@
32
32
  ```
33
33
  □補足情報
34
34
  MainWindowとMaincodeは所属しているクラスが違います。
35
- 所属しているクラスが違うので、MaincodeからMainWindowが保持しているtextbox1.Text;へはアクセスできません。
35
+ 所属しているクラスが違うので、Maincodeから**MainWindowのインスタンスを使用せず**にMainWindowが保持しているtextbox1.Text;へはアクセスできません。
36
- よって、
37
- 案a,MainWindowのtextbox1.Textが変わったことをイベントでMaincodeに通知する。
38
- 案b,MaincodeにMainWindowのインスタンスの参照を保持し、参照経由でアクセスする。(回答文)
39
36
 
40
- 案a理想です。
37
+ 他の方法としてはMainWindowのtextbox1.Text変更されたことをイベントMaincodeに通知るという手があります

2

補足

2017/11/27 02:26

投稿

umyu
umyu

スコア5846

answer CHANGED
@@ -29,4 +29,12 @@
29
29
  //省略
30
30
  var ans = this.window.textbox1.Text;
31
31
  }
32
- ```
32
+ ```
33
+ □補足情報
34
+ MainWindowとMaincodeは所属しているクラスが違います。
35
+ 所属しているクラスが違うので、MaincodeからMainWindowが保持しているtextbox1.Text;へはアクセスできません。
36
+ よって、
37
+ 案a,MainWindowのtextbox1.Textが変わったことをイベントでMaincodeに通知する。
38
+ 案b,MaincodeにMainWindowのインスタンスの参照を保持し、参照経由でアクセスする。(回答文)
39
+
40
+ 案aが理想です。

1

ソースコードを追加

2017/11/27 02:12

投稿

umyu
umyu

スコア5846

answer CHANGED
@@ -1,10 +1,32 @@
1
+ 場当たり的な対応でよければ、以下のコードで動作しませんか?
2
+ 一度C#の書籍を買って基礎的な部分について学習されてみてはいかがでしょうか。
3
+
4
+ Window.xaml.cs
1
- ```
5
+ ```C#
2
6
  private readonly Maincode;
3
7
  public MainWindow()
4
8
  {
5
9
  InitializeComponent();
10
+ // Maincode側にMainWindowの参照を保持
6
11
  maincode = new Maincode(this);
7
12
  maincode .TextBoxAdd = text_add;
8
13
  }
9
14
  ```
15
+
10
- Maincode
16
+ Maincode.cs
17
+ ```C#
18
+ class Maincode
19
+ {
20
+ public Action<string> TextBoxAdd;// ログ出力用
21
+      private readonly MainWindow window;
22
+ //コンストラクタを定義
23
+ public Maincode(MainWindow window)
24
+ {
25
+ this.window = window;
26
+ }
27
+ public void Start()
28
+ {
29
+ //省略
30
+ var ans = this.window.textbox1.Text;
31
+ }
32
+ ```