質問: false; } ```
回答: 手順を示します。 これは、コンボボックスにはあらかじめ"10000"と"30000"が追加されていることを前提としています。 もしそうではなく、"10秒", "30秒"といった形で追加している場合は、下のほうに記載してるパターンを確認してください。 1 コンボボックスをダブルクリックしてSelectedIndexChangedイベントを追加します。 ※ SelectedIndexChangedイベントはコンボボックスの選択肢を選んだ時に発生するイベントです。 ``` private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { } ``` 2 コンボボックスで選択された項目の内容を取得します。 ※ コンボボックスにはあらかじめ"10000"と"30000"を追加しておいてください。 ``` private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { // ↓ selectedItemには選択された項目の文字列が代入されます。 string selectedItem = comboBox1.SelectedItem.ToString(); } ``` 3 selectedItemを数値型(int)に変換します。 ``` private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { // ↓ selectedItemには選択された項目の文字列が代入されます。 string selectedItem = comboBox1.SelectedItem.ToString(); // ↓ string型(文字列)からint型(数値型)に変換します。 int interval = int.Parse(selectedItem); } ``` 4 intervalをタイマーのIntervalプロパティに代入して、Enableプロパティをtrueにします。 ``` private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { // ↓ selectedItemには選択された項目の文字列が代入されます。 string selectedItem = comboBox1.SelectedItem.ToString(); // ↓ string型(文字列)からint型(数値型)に変換します。 int interval = int.Parse(selectedItem); // ↓ timer1のIntervalプロパティに上のinterval変数の値を代入します。 timer1.Interval = interval; // ↓ timer1のEnableプロパティにtrueを代入してタイマを開始します。 timer1.Enabled = true; } ``` これで、コンボボックスの選択を変更することで、更新間隔を変更できます。 **もしコンボボックスに"10秒"とか"10"という形式で追加している場合...** ``` private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { // ↓ コンボボックスの選択されているindexを取得する int index = comboBox1.SelectedIndex; // indexとは、コンボボックスに追加されている項目の番号を表します。 // 例えば、コンボボックスに // 10秒 // 30秒 // と追加されている場合、10秒はIndexが0になります。そして30秒はIndexが1になります。 // ※ 一般的にindexは0から始まります。 // ↓ indexに応じて、更新間隔(interval)を切り替える int interval = 100000; switch (index) { case 0: // 10秒を選択した場合 interval = 10000; break; case 1: // 30秒を選択した場合 interval = 30000; break; } // ↓ timer1のIntervalプロパティに上のinterval変数の値を代入します。 timer1.Interval = interval; // ↓ timer1のEnableプロパティにtrueを代入してタイマを開始します。 timer1.Enabled = true; } ``` 追記 質問者様より、Buttonをクリックしたタイミングで周期を変更することは可能か?という質問に対する回答を以下に示します。 コンボボックスのSelectedIndexChangedイベントではなく、Buttonクリックのタイミングで周期を変更することは可能です。 今回は新しいButton(button4)を追加することとします。 1 新しく追加したButtonをダブルクリックしてClickイベントを追加します。 ``` private void button4_Click(object sender, EventArgs e) { } ``` 2 コンボボックスの選択状態から更新周期を取得します。 ※ 先の回答と同様にコンボボックスに追加されている項目のフォーマットにより2パターン方法があります。 **パターン1 ・・・ コンボボックスに"10000"と"30000"が追加されている場合** ``` private void button4_Click(object sender, EventArgs e) { // ↓ selectedItemには選択された項目の文字列が代入されます。 string selectedItem = comboBox1.SelectedItem.ToString(); // ↓ string型(文字列)からint型(数値型)に変換します。 int interval = int.Parse(selectedItem); } ``` **パターン2 ・・・ コンボボックスに"10秒"や"30"というような形で項目が追加されている場合** ``` private void button4_Click(object sender, EventArgs e) { // ↓ コンボボックスの選択されているindexを取得する int index = comboBox1.SelectedIndex; // indexとは、コンボボックスに追加されている項目の番号を表します。 // 例えば、コンボボックスに // 10秒 // 30秒 // と追加されている場合、10秒はIndexが0になります。そして30秒はIndexが1になります。 // ※ 一般的にindexは0から始まります。 // ↓ indexに応じて、更新間隔(interval)を切り替える int interval = 100000; switch (index) { case 0: // 10秒を選択した場合 interval = 10000; break; case 1: // 30秒を選択した場合 interval = 30000; break; } } ``` 3 更新周期(interval)をタイマーにセットします。 **パターン1** ``` private void button4_Click(object sender, EventArgs e) { // ↓ selectedItemには選択された項目の文字列が代入されます。 string selectedItem = comboBox1.SelectedItem.ToString(); // ↓ string型(文字列)からint型(数値型)に変換します。 int interval = int.Parse(selectedItem); // ↓ timer1のIntervalプロパティに上のinterval変数の値を代入します。 timer1.Interval = interval; // ↓ timer1のEnableプロパティにtrueを代入してタイマを開始します。 timer1.Enabled = true; } ``` **パターン2** ``` private void button4_Click(object sender, EventArgs e) { // ↓ コンボボックスの選択されているindexを取得する int index = comboBox1.SelectedIndex; // indexとは、コンボボックスに追加されている項目の番号を表します。 // 例えば、コンボボックスに // 10秒 // 30秒 // と追加されている場合、10秒はIndexが0になります。そして30秒はIndexが1になります。 // ※ 一般的にindexは0から始まります。 // ↓ indexに応じて、更新間隔(interval)を切り替える int interval = 100000; switch (index) { case 0: // 10秒を選択した場合 interval = 10000; break; case 1: // 30秒を選択した場合 interval = 30000; break; } // ↓ timer1のIntervalプロパティに上のinterval変数の値を代入します。 timer1.Interval = interval; // ↓ timer1のEnableプロパティにtrueを代入してタイマを開始します。 timer1.Enabled = true; } ``` 以上です。イベントはコンボボックスのイベント(comboBox1_SelectedIndexChanged)からボタンのイベント(button4_Click)に変更しましたが、中身の処理は同じになります。 もしもボタンを追加せずに、すでにあるボタンを使いまわしたいのであれば、button4_Click関数の中身を別のイベントにコピーしてください。