回答編集履歴

4

Maincodeの宣言を修正

2017/11/28 06:13

投稿

umyu
umyu

スコア5846

test CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  ```C#
10
10
 
11
- private readonly Maincode;
11
+ private readonly Maincode maincode;
12
12
 
13
13
  public MainWindow()
14
14
 

3

補足情報を整理

2017/11/28 06:13

投稿

umyu
umyu

スコア5846

test CHANGED
@@ -66,14 +66,8 @@
66
66
 
67
67
  MainWindowとMaincodeは所属しているクラスが違います。
68
68
 
69
- 所属しているクラスが違うので、MaincodeからMainWindowが保持しているtextbox1.Text;へはアクセスできません。
69
+ 所属しているクラスが違うので、Maincodeから**MainWindowのインスタンスを使用せず**にMainWindowが保持しているtextbox1.Text;へはアクセスできません。
70
-
71
- よって、
72
-
73
- 案a,MainWindowのtextbox1.Textが変わったことをイベントでMaincodeに通知する。
74
-
75
- 案b,MaincodeにMainWindowのインスタンスの参照を保持し、参照経由でアクセスする。(回答文)
76
70
 
77
71
 
78
72
 
79
- aが理想です。
73
+ 他の方法としてはMainWindowのtextbox1.Text変更されたことをイベントMaincodeに通知るという手があります

2

補足

2017/11/27 02:26

投稿

umyu
umyu

スコア5846

test CHANGED
@@ -61,3 +61,19 @@
61
61
  }
62
62
 
63
63
  ```
64
+
65
+ □補足情報
66
+
67
+ MainWindowとMaincodeは所属しているクラスが違います。
68
+
69
+ 所属しているクラスが違うので、MaincodeからMainWindowが保持しているtextbox1.Text;へはアクセスできません。
70
+
71
+ よって、
72
+
73
+ 案a,MainWindowのtextbox1.Textが変わったことをイベントでMaincodeに通知する。
74
+
75
+ 案b,MaincodeにMainWindowのインスタンスの参照を保持し、参照経由でアクセスする。(回答文)
76
+
77
+
78
+
79
+ 案aが理想です。

1

ソースコードを追加

2017/11/27 02:12

投稿

umyu
umyu

スコア5846

test CHANGED
@@ -1,4 +1,12 @@
1
+ 場当たり的な対応でよければ、以下のコードで動作しませんか?
2
+
3
+ 一度C#の書籍を買って基礎的な部分について学習されてみてはいかがでしょうか。
4
+
5
+
6
+
7
+ Window.xaml.cs
8
+
1
- ```
9
+ ```C#
2
10
 
3
11
  private readonly Maincode;
4
12
 
@@ -8,6 +16,8 @@
8
16
 
9
17
  InitializeComponent();
10
18
 
19
+ // Maincode側にMainWindowの参照を保持
20
+
11
21
  maincode = new Maincode(this);
12
22
 
13
23
  maincode .TextBoxAdd = text_add;
@@ -16,4 +26,38 @@
16
26
 
17
27
  ```
18
28
 
29
+
30
+
19
- Maincode
31
+ Maincode.cs
32
+
33
+ ```C#
34
+
35
+ class Maincode
36
+
37
+ {
38
+
39
+ public Action<string> TextBoxAdd;// ログ出力用
40
+
41
+      private readonly MainWindow window;
42
+
43
+ //コンストラクタを定義
44
+
45
+ public Maincode(MainWindow window)
46
+
47
+ {
48
+
49
+ this.window = window;
50
+
51
+ }
52
+
53
+ public void Start()
54
+
55
+ {
56
+
57
+ //省略
58
+
59
+ var ans = this.window.textbox1.Text;
60
+
61
+ }
62
+
63
+ ```