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

回答編集履歴

2

訂正

2021/08/28 14:11

投稿

退会済みユーザー
answer CHANGED
@@ -63,6 +63,6 @@
63
63
  }
64
64
  ```
65
65
 
66
- (3) 実行して Button1 をクリックすると Timer.Interval の間隔で TextBox.Text から文字列を取得し、それを byte に変換して Label に書き込み
66
+ (3) 実行して Button1 をクリックすると Timer.Interval の間隔で TextBox.Text から文字列を取得し、それを byte に変換して Label に書き込み
67
67
 
68
68
  ![イメージ説明](f220b5ad7539a59550146a1838dc4985.jpeg)

1

追記

2021/08/28 14:11

投稿

退会済みユーザー
answer CHANGED
@@ -10,4 +10,59 @@
10
10
  }
11
11
  ```
12
12
 
13
- 基本のキのところができてないようです。全体的に見直す必要があるのでは?
13
+ 基本のキのところができてないようです。全体的に見直す必要があるのでは?
14
+
15
+ **【追記】**
16
+
17
+ 下の 2021/08/28 20:21 の私のコメントで「あとで全体を見直したコードを回答欄に書いておきます」と書いた件です。
18
+
19
+ (1) デザイン画面で Form1 に TextBox, Button, Label をドラッグ&ドロップ
20
+
21
+ ![イメージ説明](c51e585d25f5724e2838b56a20a003a2.jpeg)
22
+
23
+ (2) Form1.cs に以下のコードを実装
24
+
25
+ ```
26
+ using System;
27
+ using System.Windows.Forms;
28
+
29
+ namespace WinFormsApp2
30
+ {
31
+ public partial class Form1 : Form
32
+ {
33
+ private System.Timers.Timer timer;
34
+
35
+ public Form1()
36
+ {
37
+ InitializeComponent();
38
+ this.textBox1.Text = "10";
39
+ this.timer = new System.Timers.Timer();
40
+ this.timer.Elapsed += Timer_Elapsed;
41
+
42
+ this.label1.Text = "";
43
+ }
44
+
45
+ private void button1_Click(object sender, EventArgs e)
46
+ {
47
+ this.timer.Interval = 3000d;
48
+ this.timer.Start();
49
+ }
50
+
51
+ private void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
52
+ {
53
+ // TextBox.Text から値を取得するのは Invoke を使う必要はなく
54
+ //byte slaveId = (byte)this.Invoke((Func<byte>)(() => Convert.ToByte(this.textBox1.Text)));
55
+
56
+ // これで良い
57
+ byte slaveId = Convert.ToByte(this.textBox1.Text);
58
+
59
+ // 書き込む場合は Invoke を使う必要がある
60
+ this.Invoke((Action)(() => this.label1.Text += $"{slaveId} "));
61
+ }
62
+ }
63
+ }
64
+ ```
65
+
66
+ (3) 実行して Button1 をクリックすると Timer.Interval の間隔で TextBox.Text から文字て列を取得し、それを byte に変換して Label に書き込み
67
+
68
+ ![イメージ説明](f220b5ad7539a59550146a1838dc4985.jpeg)