###前提・実現したいこと
C#で、webBrowserを〇秒毎に自動更新するプログラムの改良(comboBoxで更新の秒数を選びたい。)
(初心者な物で、説明不足であれば返信で詳細説明します。)
###発生している問題・エラーメッセージ
今現在、Buttonを使用して、何秒かをえらんでいるのですが、comboBoxにアイテムを追加するのは できたのですが、それを、開始ボタンを組み合わせる方法がわかりません。
###該当のソースコード
C#
1 private void timer1_Tick(object sender, EventArgs e) 2 { 3 webBrowser1.Refresh(); 4 } 5 private void Button1_Click_1(object sender, EventArgs e)//ここと 6 { 7 timer1.Interval = 10000; 8 timer1.Enabled = true; 9 } 10 private void Button2_Click(object sender, EventArgs e)//ここを、comboBoxにしたい。ボタンとcomboBoxの組み合わせ方がわからないです 11 { 12 timer1.Interval = 30000; 13 timer1.Enabled = true; 14 } 15 private void Button3_Click_1(object sender, EventArgs e) 16 { 17 timer1.Enabled = false; 18 } 19
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
ベストアンサー
手順を示します。
これは、コンボボックスにはあらかじめ"10000"と"30000"が追加されていることを前提としています。
もしそうではなく、"10秒", "30秒"といった形で追加している場合は、下のほうに記載してるパターンを確認してください。
① コンボボックスをダブルクリックしてSelectedIndexChangedイベントを追加します。
※ SelectedIndexChangedイベントはコンボボックスの選択肢を選んだ時に発生するイベントです。
C#
1 private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 2 { 3 4 }
② コンボボックスで選択された項目の内容を取得します。
※ コンボボックスにはあらかじめ"10000"と"30000"を追加しておいてください。
C#
1 private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 2 { 3 // ↓ selectedItemには選択された項目の文字列が代入されます。 4 string selectedItem = comboBox1.SelectedItem.ToString(); 5 }
③ selectedItemを数値型(int)に変換します。
C#
1 private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 2 { 3 // ↓ selectedItemには選択された項目の文字列が代入されます。 4 string selectedItem = comboBox1.SelectedItem.ToString(); 5 // ↓ string型(文字列)からint型(数値型)に変換します。 6 int interval = int.Parse(selectedItem); 7 }
④ intervalをタイマーのIntervalプロパティに代入して、Enableプロパティをtrueにします。
C#
1 private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 2 { 3 // ↓ selectedItemには選択された項目の文字列が代入されます。 4 string selectedItem = comboBox1.SelectedItem.ToString(); 5 // ↓ string型(文字列)からint型(数値型)に変換します。 6 int interval = int.Parse(selectedItem); 7 8 // ↓ timer1のIntervalプロパティに上のinterval変数の値を代入します。 9 timer1.Interval = interval; 10 // ↓ timer1のEnableプロパティにtrueを代入してタイマを開始します。 11 timer1.Enabled = true; 12 }
これで、コンボボックスの選択を変更することで、更新間隔を変更できます。
もしコンボボックスに"10秒"とか"10"という形式で追加している場合...
C#
1 private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) 2 { 3 // ↓ コンボボックスの選択されているindexを取得する 4 int index = comboBox1.SelectedIndex; 5 // indexとは、コンボボックスに追加されている項目の番号を表します。 6 // 例えば、コンボボックスに 7 // 10秒 8 // 30秒 9 // と追加されている場合、10秒はIndexが0になります。そして30秒はIndexが1になります。 10 // ※ 一般的にindexは0から始まります。 11 12 // ↓ indexに応じて、更新間隔(interval)を切り替える 13 int interval = 100000; 14 switch (index) 15 { 16 case 0: // 10秒を選択した場合 17 interval = 10000; 18 break; 19 case 1: // 30秒を選択した場合 20 interval = 30000; 21 break; 22 } 23 24 // ↓ timer1のIntervalプロパティに上のinterval変数の値を代入します。 25 timer1.Interval = interval; 26 // ↓ timer1のEnableプロパティにtrueを代入してタイマを開始します。 27 timer1.Enabled = true; 28 }
追記
質問者様より、Buttonをクリックしたタイミングで周期を変更することは可能か?という質問に対する回答を以下に示します。
コンボボックスのSelectedIndexChangedイベントではなく、Buttonクリックのタイミングで周期を変更することは可能です。
今回は新しいButton(button4)を追加することとします。
① 新しく追加したButtonをダブルクリックしてClickイベントを追加します。
C#
1 private void button4_Click(object sender, EventArgs e) 2 { 3 4 }
② コンボボックスの選択状態から更新周期を取得します。
※ 先の回答と同様にコンボボックスに追加されている項目のフォーマットにより2パターン方法があります。
パターン1 ・・・ コンボボックスに"10000"と"30000"が追加されている場合
C#
1 private void button4_Click(object sender, EventArgs e) 2 { 3 // ↓ selectedItemには選択された項目の文字列が代入されます。 4 string selectedItem = comboBox1.SelectedItem.ToString(); 5 // ↓ string型(文字列)からint型(数値型)に変換します。 6 int interval = int.Parse(selectedItem); 7 }
パターン2 ・・・ コンボボックスに"10秒"や"30"というような形で項目が追加されている場合
C#
1 private void button4_Click(object sender, EventArgs e) 2 { 3 // ↓ コンボボックスの選択されているindexを取得する 4 int index = comboBox1.SelectedIndex; 5 // indexとは、コンボボックスに追加されている項目の番号を表します。 6 // 例えば、コンボボックスに 7 // 10秒 8 // 30秒 9 // と追加されている場合、10秒はIndexが0になります。そして30秒はIndexが1になります。 10 // ※ 一般的にindexは0から始まります。 11 12 // ↓ indexに応じて、更新間隔(interval)を切り替える 13 int interval = 100000; 14 switch (index) 15 { 16 case 0: // 10秒を選択した場合 17 interval = 10000; 18 break; 19 case 1: // 30秒を選択した場合 20 interval = 30000; 21 break; 22 } 23 }
③ 更新周期(interval)をタイマーにセットします。
**パターン1 **
C#
1 private void button4_Click(object sender, EventArgs e) 2 { 3 // ↓ selectedItemには選択された項目の文字列が代入されます。 4 string selectedItem = comboBox1.SelectedItem.ToString(); 5 // ↓ string型(文字列)からint型(数値型)に変換します。 6 int interval = int.Parse(selectedItem); 7 8 // ↓ timer1のIntervalプロパティに上のinterval変数の値を代入します。 9 timer1.Interval = interval; 10 // ↓ timer1のEnableプロパティにtrueを代入してタイマを開始します。 11 timer1.Enabled = true; 12 }
**パターン2 **
C#
1 private void button4_Click(object sender, EventArgs e) 2 { 3 // ↓ コンボボックスの選択されているindexを取得する 4 int index = comboBox1.SelectedIndex; 5 // indexとは、コンボボックスに追加されている項目の番号を表します。 6 // 例えば、コンボボックスに 7 // 10秒 8 // 30秒 9 // と追加されている場合、10秒はIndexが0になります。そして30秒はIndexが1になります。 10 // ※ 一般的にindexは0から始まります。 11 12 // ↓ indexに応じて、更新間隔(interval)を切り替える 13 int interval = 100000; 14 switch (index) 15 { 16 case 0: // 10秒を選択した場合 17 interval = 10000; 18 break; 19 case 1: // 30秒を選択した場合 20 interval = 30000; 21 break; 22 } 23 24 // ↓ timer1のIntervalプロパティに上のinterval変数の値を代入します。 25 timer1.Interval = interval; 26 // ↓ timer1のEnableプロパティにtrueを代入してタイマを開始します。 27 timer1.Enabled = true; 28 }
以上です。イベントはコンボボックスのイベント(comboBox1_SelectedIndexChanged)からボタンのイベント(button4_Click)に変更しましたが、中身の処理は同じになります。
もしもボタンを追加せずに、すでにあるボタンを使いまわしたいのであれば、button4_Click関数の中身を別のイベントにコピーしてください。
投稿2018/01/18 03:18
編集2018/01/18 12:44総合スコア212
0
私が 新しい言語を勉強する時とか、何が書いてあるのか分からないソースを読む時とかにやるのが、ソースコードに一行ずつ コメントを入れていってみるということです。
特に勉強し始めの頃は もう本当に全行に入れる勢いで良いと思います。
以下のような感じでしょうか。
csharp
1// ボタン1がクリックされた時に呼ばれる処理 2private void Button1_Click_1(object sender, EventArgs e) 3{ 4 timer1.Interval = 10000; // タイマーの「〇秒毎」を設定 5 timer1.Enabled = true; // タイマーを有効にする 6}
それで、何をしているのか分からない箇所があれば調べる、といった感じですね。
上のソースも、コメントを入れてみると、どこを直せばよいか少し分かりませんか?
あとは「コンボボックスの値を取得する」方法を調べれば 出来そうな気がします。
ちなみに私は上記の作業を ソースコードをExcelに貼り付けてやってます。
(背景色を変えたり 文字色を変えたり 太字にしたり 吹き出し付けたり 色々できるので割と便利)
投稿2018/01/17 01:51
総合スコア1126
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2018/01/18 11:26
2018/01/18 12:26
退会済みユーザー
2018/01/18 13:13