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

質問編集履歴

2

試したことを追加

2017/04/05 09:19

投稿

maysc
maysc

スコア11

title CHANGED
File without changes
body CHANGED
@@ -2,6 +2,8 @@
2
2
  初心者です。
3
3
  単純なミスか根本的な部分での勘違いだと思うのですが…例外がスローされて困っています。
4
4
 
5
+ **ヒント、試してみたらいいこと、検索すべきワード、勉強すべき点**などなんでも良いのでご教示願います。
6
+
5
7
  c#でボタンをクリックした時にラベルの文字を変更したいです。
6
8
 
7
9
  Form1とForm2があります。
@@ -116,11 +118,10 @@
116
118
  try catchも書いてみましたが特に何の反応もありません。
117
119
 
118
120
  自分なりに調べた結果、スレッドセーフな呼び出しとFormを1つだけ表示させるようにしました。
119
- はじめは以下の通り、直接書き換えようとしました。
120
- また、Invokeとdelegateを使ってみましたが、やはり連打すると止まってしまいました。
121
121
 
122
- **ヒント、試してみたらいいこと、検索すべきワード、勉強すべき点**などなんでも良いのでご教示願います。
123
122
 
123
+
124
+ はじめは以下の通り、直接書き換えようとしました。
124
125
  ```c#
125
126
  private void btn_Click(object sender, MouseEventArgs e)
126
127
  {
@@ -129,5 +130,25 @@
129
130
  }
130
131
  ```
131
132
 
133
+ Invokeとdelegateを使ってみましたが、やはり連打すると止まってしまいました。
134
+ ```c#
135
+ int i1 = 0;
136
+ delegate void TestDelegate(int i);
137
+
138
+ internal void change(int i)
139
+ {
140
+ Form2.Instance.lbl_1.Text = Convert.ToString(i.ToString());
141
+ }
142
+
143
+
144
+ private void button1_MouseDown(object sender, MouseEventArgs e)
145
+ {
146
+ i1++;
147
+ Invoke(new TestDelegate(change), i1);
148
+ }
149
+ ```
150
+
151
+
152
+
132
153
  ###補足情報(言語/FW/ツール等のバージョンなど)
133
154
  Visual Studio 2015で開発しています。

1

注釈の追加

2017/04/05 09:19

投稿

maysc
maysc

スコア11

title CHANGED
File without changes
body CHANGED
@@ -57,7 +57,7 @@
57
57
  if (wk.bw.IsBusy != true)
58
58
  {
59
59
 
60
- i1++;
60
+ i1++;//4つそれぞれここの動きが違う。増えたり減ったり。
61
61
  wk.bw.RunWorkerAsync(i1);
62
62
  }
63
63
  }
@@ -94,6 +94,7 @@
94
94
  {
95
95
  //ここで例外が発生する
96
96
  Form2.Instance.label1.Text = Convert.ToString(result);
97
+ //表示が4つそれぞれ違う。i1のときlabel1,i2のときlabel2..
97
98
  }
98
99
  catch (Exception ex)
99
100
  {
@@ -118,6 +119,8 @@
118
119
  はじめは以下の通り、直接書き換えようとしました。
119
120
  また、Invokeとdelegateを使ってみましたが、やはり連打すると止まってしまいました。
120
121
 
122
+ **ヒント、試してみたらいいこと、検索すべきワード、勉強すべき点**などなんでも良いのでご教示願います。
123
+
121
124
  ```c#
122
125
  private void btn_Click(object sender, MouseEventArgs e)
123
126
  {