質問編集履歴

4

最小限の再現コードを提示してみました。

2018/09/25 14:55

投稿

FacePanel
FacePanel

スコア48

test CHANGED
File without changes
test CHANGED
@@ -102,6 +102,108 @@
102
102
 
103
103
 
104
104
 
105
-
106
-
107
105
  ここまでで、何を言いたいのかわかっていただけたでしょうか?
106
+
107
+
108
+
109
+ ------------------
110
+
111
+ ややっこしいといけないので、あらためてのエッセンスだけにしたものを提示させていただきます。
112
+
113
+
114
+
115
+ ```C#
116
+
117
+ // 親フォームは以下のコード
118
+
119
+ namespace FormsApp
120
+
121
+ {
122
+
123
+ public partial class OyaForm : Form
124
+
125
+ {
126
+
127
+ public OyaForm()
128
+
129
+ {
130
+
131
+ InitializeComponent();
132
+
133
+ }
134
+
135
+
136
+
137
+ private void oyaButton_Click(object sender, EventArgs e)
138
+
139
+ {
140
+
141
+ KoForm koForm = new KoForm();
142
+
143
+ koForm.Show();
144
+
145
+ }
146
+
147
+ }
148
+
149
+ }
150
+
151
+
152
+
153
+ // 子フォームには以下のコード
154
+
155
+ private Form oyaForm = new Form();
156
+
157
+ private string sKoText = "";
158
+
159
+
160
+
161
+ public KoForm()
162
+
163
+ {
164
+
165
+ InitializeComponent();
166
+
167
+ }
168
+
169
+
170
+
171
+ public Form justOyaForm
172
+
173
+ {
174
+
175
+ get { return oyaForm; }
176
+
177
+ set { oyaForm = value; }
178
+
179
+ }
180
+
181
+
182
+
183
+
184
+
185
+ private void koButton_Click(object sender, EventArgs e)
186
+
187
+ {
188
+
189
+ if (koBox.Text != "")
190
+
191
+ {
192
+
193
+ sKoText = koBox.Text;
194
+
195
+ Form oya = new OyaForm();
196
+
197
+ oya.oyaBox.Text = sKoText; // ここがエラーとなって、コンパイルできません。
198
+
199
+ }
200
+
201
+ }
202
+
203
+ ```
204
+
205
+
206
+
207
+ 最小限というと、こんなところです。上記、エラー部分をどうしたらよいでしょうか?
208
+
209
+ よろしくお願いします。

3

少しずつ解明した内容を記載

2018/09/25 14:54

投稿

FacePanel
FacePanel

スコア48

test CHANGED
File without changes
test CHANGED
@@ -47,3 +47,61 @@
47
47
  ただ、怪しいのは、大元のFormをNewFormのなかで、MotoForm form = new MotoForm();というコードを入れたうえで、そのdataGridView1のDataSourceにDataTableを入れたことで、元々表示されていたMotoFormとは別のMotoFormのdataGridView1に
48
48
 
49
49
  DataTableを表示させていたのかも知れません。再現できるコードの提示とは別に、ちょっと調べてみます。
50
+
51
+
52
+
53
+ あと、NewFormの呼び出しに当たっては、上記のloginNameなどとは別に、
54
+
55
+ ```C#
56
+
57
+ form1.NewForm = this;
58
+
59
+ コード
60
+
61
+ ```
62
+
63
+ とし、NewFormのcs内では、
64
+
65
+ ```C#
66
+
67
+ public Form NewForm
68
+
69
+ {
70
+
71
+ get { return newForm; }
72
+
73
+ set { newForm = value; }
74
+
75
+ }
76
+
77
+ ```
78
+
79
+ として、newformにMotoFormを渡しておりました。
80
+
81
+
82
+
83
+
84
+
85
+ このため、問題は、別フォームからDataGridViewに表示できないという問題ではなくて、別フォームから元のMotoFormに戻れないということのようです。
86
+
87
+
88
+
89
+ というのも、別フォームのボタンクリックイベントとして、
90
+
91
+ ```C#
92
+
93
+ motoForm.SetDataOnGrid(server, authentic, logname, logpass, f, c, l, a, s);
94
+
95
+ ```
96
+
97
+ というように、motoFormのメソッドにアクセスするためにMotoForm form = new MotoForm();というコードが必要だったからです。
98
+
99
+
100
+
101
+ MotoForm form = new MotoForm();というコードを利用しないで、MotoFormのdataGridView1にDataTableを表示させるにはどうしたらよいのか、という問題のようでした。
102
+
103
+
104
+
105
+
106
+
107
+ ここまでで、何を言いたいのかわかっていただけたでしょうか?

2

追加情報

2018/09/24 14:41

投稿

FacePanel
FacePanel

スコア48

test CHANGED
File without changes
test CHANGED
@@ -39,3 +39,11 @@
39
39
 
40
40
 
41
41
  なお、このserverName, authentic, loginName, loginPassは、SQL Serverのものです。
42
+
43
+
44
+
45
+ また、この現象を再現する最小限のものを提示したいのですが、まだ、再現できる状態でお見せできる状態にはなっていません。
46
+
47
+ ただ、怪しいのは、大元のFormをNewFormのなかで、MotoForm form = new MotoForm();というコードを入れたうえで、そのdataGridView1のDataSourceにDataTableを入れたことで、元々表示されていたMotoFormとは別のMotoFormのdataGridView1に
48
+
49
+ DataTableを表示させていたのかも知れません。再現できるコードの提示とは別に、ちょっと調べてみます。

1

審問内容に不備があるとの指摘を受けてのコメント。

2018/09/24 13:32

投稿

FacePanel
FacePanel

スコア48

test CHANGED
File without changes
test CHANGED
@@ -9,3 +9,33 @@
9
9
 
10
10
 
11
11
  よろしくお願い致します。
12
+
13
+
14
+
15
+ 質問を編集させていただきます。
16
+
17
+
18
+
19
+ まず、前スレッドは削除依頼をしました。また、Visual Studio Community 2017 Version 15.8.4です。
20
+
21
+
22
+
23
+ NewForm form1 = new NewForm();
24
+
25
+ form1.Server = serverName;
26
+
27
+ form1.Authentic = authentic;
28
+
29
+ form1.LogName = loginName;
30
+
31
+ form1.LogPass = loginPass;
32
+
33
+
34
+
35
+ form1.Table = dataTable;
36
+
37
+ form1.Show();
38
+
39
+
40
+
41
+ なお、このserverName, authentic, loginName, loginPassは、SQL Serverのものです。