回答編集履歴

2

訂正

2021/08/28 14:11

投稿

退会済みユーザー
test CHANGED
@@ -128,7 +128,7 @@
128
128
 
129
129
 
130
130
 
131
- (3) 実行して Button1 をクリックすると Timer.Interval の間隔で TextBox.Text から文字列を取得し、それを byte に変換して Label に書き込み
131
+ (3) 実行して Button1 をクリックすると Timer.Interval の間隔で TextBox.Text から文字列を取得し、それを byte に変換して Label に書き込み
132
132
 
133
133
 
134
134
 

1

追記

2021/08/28 14:11

投稿

退会済みユーザー
test CHANGED
@@ -23,3 +23,113 @@
23
23
 
24
24
 
25
25
  基本のキのところができてないようです。全体的に見直す必要があるのでは?
26
+
27
+
28
+
29
+ **【追記】**
30
+
31
+
32
+
33
+ 下の 2021/08/28 20:21 の私のコメントで「あとで全体を見直したコードを回答欄に書いておきます」と書いた件です。
34
+
35
+
36
+
37
+ (1) デザイン画面で Form1 に TextBox, Button, Label をドラッグ&ドロップ
38
+
39
+
40
+
41
+ ![イメージ説明](c51e585d25f5724e2838b56a20a003a2.jpeg)
42
+
43
+
44
+
45
+ (2) Form1.cs に以下のコードを実装
46
+
47
+
48
+
49
+ ```
50
+
51
+ using System;
52
+
53
+ using System.Windows.Forms;
54
+
55
+
56
+
57
+ namespace WinFormsApp2
58
+
59
+ {
60
+
61
+ public partial class Form1 : Form
62
+
63
+ {
64
+
65
+ private System.Timers.Timer timer;
66
+
67
+
68
+
69
+ public Form1()
70
+
71
+ {
72
+
73
+ InitializeComponent();
74
+
75
+ this.textBox1.Text = "10";
76
+
77
+ this.timer = new System.Timers.Timer();
78
+
79
+ this.timer.Elapsed += Timer_Elapsed;
80
+
81
+
82
+
83
+ this.label1.Text = "";
84
+
85
+ }
86
+
87
+
88
+
89
+ private void button1_Click(object sender, EventArgs e)
90
+
91
+ {
92
+
93
+ this.timer.Interval = 3000d;
94
+
95
+ this.timer.Start();
96
+
97
+ }
98
+
99
+
100
+
101
+ private void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
102
+
103
+ {
104
+
105
+ // TextBox.Text から値を取得するのは Invoke を使う必要はなく
106
+
107
+ //byte slaveId = (byte)this.Invoke((Func<byte>)(() => Convert.ToByte(this.textBox1.Text)));
108
+
109
+
110
+
111
+ // これで良い
112
+
113
+ byte slaveId = Convert.ToByte(this.textBox1.Text);
114
+
115
+
116
+
117
+ // 書き込む場合は Invoke を使う必要がある
118
+
119
+ this.Invoke((Action)(() => this.label1.Text += $"{slaveId} "));
120
+
121
+ }
122
+
123
+ }
124
+
125
+ }
126
+
127
+ ```
128
+
129
+
130
+
131
+ (3) 実行して Button1 をクリックすると Timer.Interval の間隔で TextBox.Text から文字て列を取得し、それを byte に変換して Label に書き込み
132
+
133
+
134
+
135
+ ![イメージ説明](f220b5ad7539a59550146a1838dc4985.jpeg)