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

質問編集履歴

2

画面キャプチャ追加

2020/05/07 08:35

投稿

testUser2022
testUser2022

スコア1

title CHANGED
File without changes
body CHANGED
@@ -12,7 +12,9 @@
12
12
  メインフォームのボタンクリックでユーザコントロールのテキストに文字列を表示させることができない。エラーの発生はなし。期待するメソッドも全てコールされている。
13
13
 
14
14
  ### 該当のソースコード
15
-
15
+ 実際のツールのキャプチャを記載します。
16
+ Formのテキストは更新されますが、ユーザコントロール上のテキストは更新されません。(testcメソッドはコールされている)
17
+ ![イメージ説明](1139c3251467605bcaebe2a8705c7df6.png)
16
18
  ```C#
17
19
  //■メインフォーム
18
20
  public partial class Form1 : Form

1

コンパイルが通ることが確認後、再度最新のソースをアップし直しました。

2020/05/07 08:35

投稿

testUser2022
testUser2022

スコア1

title CHANGED
File without changes
body CHANGED
@@ -17,6 +17,8 @@
17
17
  //■メインフォーム
18
18
  public partial class Form1 : Form
19
19
  {
20
+ //private static UserControl1 _uc1;
21
+
20
22
  public Form1()
21
23
  {
22
24
  InitializeComponent();
@@ -24,12 +26,14 @@
24
26
 
25
27
  public void button1_Click(object sender, EventArgs e)
26
28
  {
29
+ //UserControl1.Instance.Show();
30
+
31
+ textBox1.Text = "abc";
27
32
  UserControl1.Instance.testc();
28
- this.Refresh();
33
+
29
34
  }
30
35
  }
31
36
 
32
-
33
37
  //■ユーザコントロール
34
38
  public partial class UserControl1 : UserControl
35
39
  {
@@ -46,6 +50,8 @@
46
50
  {
47
51
  get
48
52
  {
53
+ //_instanceがnullまたは破棄されているときは、
54
+ //新しくインスタンスを作成する
49
55
  if (_uc1 == null || _uc1.IsDisposed)
50
56
  {
51
57
  _uc1 = new UserControl1();
@@ -53,9 +59,10 @@
53
59
  return _uc1;
54
60
  }
55
61
  }
56
-
57
62
 
63
+
58
64
  //メインフォームからこの関数を呼んでも、テキストが更新されない
65
+
59
66
  public void testc()
60
67
  {
61
68
  textBox1.Text = "cde";
@@ -69,10 +76,8 @@
69
76
 
70
77
 
71
78
  }
72
- ```
79
+
73
80
 
74
-
75
-
76
81
  ### 試したこと
77
82
 
78
83
  同様のボタンをユーザコントロール側に実装すると、期待通りテキストが表示されます。