回答編集履歴

1

質問者様からの追加要望に対する対応

2018/01/18 12:44

投稿

g_uo
g_uo

スコア212

test CHANGED
@@ -163,3 +163,215 @@
163
163
  }
164
164
 
165
165
  ```
166
+
167
+
168
+
169
+ 追記
170
+
171
+ ---
172
+
173
+ 質問者様より、Buttonをクリックしたタイミングで周期を変更することは可能か?という質問に対する回答を以下に示します。
174
+
175
+
176
+
177
+ コンボボックスのSelectedIndexChangedイベントではなく、Buttonクリックのタイミングで周期を変更することは可能です。
178
+
179
+ 今回は新しいButton(button4)を追加することとします。
180
+
181
+
182
+
183
+ ① 新しく追加したButtonをダブルクリックしてClickイベントを追加します。
184
+
185
+ ```C#
186
+
187
+ private void button4_Click(object sender, EventArgs e)
188
+
189
+ {
190
+
191
+
192
+
193
+ }
194
+
195
+ ```
196
+
197
+ ② コンボボックスの選択状態から更新周期を取得します。
198
+
199
+ ※ 先の回答と同様にコンボボックスに追加されている項目のフォーマットにより2パターン方法があります。
200
+
201
+ **パターン1 ・・・ コンボボックスに"10000"と"30000"が追加されている場合**
202
+
203
+ ```C#
204
+
205
+ private void button4_Click(object sender, EventArgs e)
206
+
207
+ {
208
+
209
+ // ↓ selectedItemには選択された項目の文字列が代入されます。
210
+
211
+ string selectedItem = comboBox1.SelectedItem.ToString();
212
+
213
+ // ↓ string型(文字列)からint型(数値型)に変換します。
214
+
215
+ int interval = int.Parse(selectedItem);
216
+
217
+ }
218
+
219
+ ```
220
+
221
+
222
+
223
+ **パターン2 ・・・ コンボボックスに"10秒"や"30"というような形で項目が追加されている場合**
224
+
225
+ ```C#
226
+
227
+ private void button4_Click(object sender, EventArgs e)
228
+
229
+ {
230
+
231
+ // ↓ コンボボックスの選択されているindexを取得する
232
+
233
+ int index = comboBox1.SelectedIndex;
234
+
235
+ // indexとは、コンボボックスに追加されている項目の番号を表します。
236
+
237
+ // 例えば、コンボボックスに
238
+
239
+ // 10秒
240
+
241
+ // 30秒
242
+
243
+ // と追加されている場合、10秒はIndexが0になります。そして30秒はIndexが1になります。
244
+
245
+ // ※ 一般的にindexは0から始まります。
246
+
247
+
248
+
249
+ // ↓ indexに応じて、更新間隔(interval)を切り替える
250
+
251
+ int interval = 100000;
252
+
253
+ switch (index)
254
+
255
+ {
256
+
257
+ case 0: // 10秒を選択した場合
258
+
259
+ interval = 10000;
260
+
261
+ break;
262
+
263
+ case 1: // 30秒を選択した場合
264
+
265
+ interval = 30000;
266
+
267
+ break;
268
+
269
+ }
270
+
271
+ }
272
+
273
+ ```
274
+
275
+
276
+
277
+ ③ 更新周期(interval)をタイマーにセットします。
278
+
279
+ **パターン1 **
280
+
281
+ ```C#
282
+
283
+ private void button4_Click(object sender, EventArgs e)
284
+
285
+ {
286
+
287
+ // ↓ selectedItemには選択された項目の文字列が代入されます。
288
+
289
+ string selectedItem = comboBox1.SelectedItem.ToString();
290
+
291
+ // ↓ string型(文字列)からint型(数値型)に変換します。
292
+
293
+ int interval = int.Parse(selectedItem);
294
+
295
+
296
+
297
+ // ↓ timer1のIntervalプロパティに上のinterval変数の値を代入します。
298
+
299
+ timer1.Interval = interval;
300
+
301
+ // ↓ timer1のEnableプロパティにtrueを代入してタイマを開始します。
302
+
303
+ timer1.Enabled = true;
304
+
305
+ }
306
+
307
+ ```
308
+
309
+
310
+
311
+ **パターン2 **
312
+
313
+ ```C#
314
+
315
+ private void button4_Click(object sender, EventArgs e)
316
+
317
+ {
318
+
319
+ // ↓ コンボボックスの選択されているindexを取得する
320
+
321
+ int index = comboBox1.SelectedIndex;
322
+
323
+ // indexとは、コンボボックスに追加されている項目の番号を表します。
324
+
325
+ // 例えば、コンボボックスに
326
+
327
+ // 10秒
328
+
329
+ // 30秒
330
+
331
+ // と追加されている場合、10秒はIndexが0になります。そして30秒はIndexが1になります。
332
+
333
+ // ※ 一般的にindexは0から始まります。
334
+
335
+
336
+
337
+ // ↓ indexに応じて、更新間隔(interval)を切り替える
338
+
339
+ int interval = 100000;
340
+
341
+ switch (index)
342
+
343
+ {
344
+
345
+ case 0: // 10秒を選択した場合
346
+
347
+ interval = 10000;
348
+
349
+ break;
350
+
351
+ case 1: // 30秒を選択した場合
352
+
353
+ interval = 30000;
354
+
355
+ break;
356
+
357
+ }
358
+
359
+
360
+
361
+ // ↓ timer1のIntervalプロパティに上のinterval変数の値を代入します。
362
+
363
+ timer1.Interval = interval;
364
+
365
+ // ↓ timer1のEnableプロパティにtrueを代入してタイマを開始します。
366
+
367
+ timer1.Enabled = true;
368
+
369
+ }
370
+
371
+ ```
372
+
373
+
374
+
375
+ 以上です。イベントはコンボボックスのイベント(comboBox1_SelectedIndexChanged)からボタンのイベント(button4_Click)に変更しましたが、中身の処理は同じになります。
376
+
377
+ もしもボタンを追加せずに、すでにあるボタンを使いまわしたいのであれば、button4_Click関数の中身を別のイベントにコピーしてください。