- 締切済み
四択問題でタイマーを使い時間制限を設定したいのですが・・・(泣)
私は現在ITパスポートのテストを再現するプログラムを作成しています。 具体的には問題を出題し四択の選択肢から解答を選び次の問題に進んでいく・・・というようなカンジです。 ITパスポートの試験は制限時間が2時間45分なのですがタイマーを使用して制限時間を過ぎたら結果を表示したいのですがタイマーの使い方がイマイチわかりません。 知恵を貸してください。よろしくお願いします。m(_ _)m
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- うぃず(@Wizard_Zero)
- ベストアンサー率69% (344/495)
タイマー処理はTimerコントロールを使えば済みますが、2時間45分というのがネックになるかと。TimerのIntervalで設定するには待機時間が長すぎるため精度的に不安ですね・・・。 なので、TimerのIntervalは秒刻みにしておいて、開始時刻から2時間45分経過したら終了するように組めばよいと思います。この方法なら残り時間をリアルタイムに表示することもできますし。。。 ' タイマーコントロール(フォームデザイナで貼り付けた場合これは不要です) Private WithEvents Timer1 As New Timer ' 終了時刻記録用 Private dtEndTime As Date ' 開始ボタン Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click ' 確か開始ボタンと次へボタンを共有していたと思うので、 ' 次のコードは最初の呼び出しのみで処理するようにしてください。 ' 終了時刻を記憶 dtEndTime = Now().AddMinutes(165) ' 2時間45分(165分)後 'dtEndTime = Now().AddSeconds(15) ' 15秒後(動作確認用) Timer1.Interval = 1000 ' タイマーの呼び出し間隔を1秒に Timer1.Start() End Sub Private Sub Timer1_Tick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Timer1.Tick Dim span As TimeSpan = dtEndTime - Now() If span.Ticks < 0 Then Timer1.Stop() MessageBox.Show("終了です。") End If ' ↓残り時間を表示させるなら Me.Text = String.Format("残り {0}:{1:D2}:{2:D2}", span.Hours, span.Minutes, span.Seconds) ' フォームのタイトルに表示していますが適宜Labelなどに置き換えてください。 End Sub