2009/10/24に第13回北海道開発オフが開催されたので参加してきた。二日酔いの為遅刻してしまった。
今回は前回の時に作成した強制シャットダウンにカウントダウン機能を追加する。カウントダウンするということはそれを表示するものが必要。使い慣れているWindowsFormで実装する事にする。Visual StudioのインストールはできないPCの為、テキストエディタでちまちまとがんばった。
今回はここで時間切れ。後半はテキストエディタでの開発に疲れてきた。やはりGUIアプリケーションをテキストエディタのみで行うのは厳しい。もうそろそろ開発可能なノートPCが欲しいところ。あ、最近新しいOSが発売されたなー。
ランチはまんでがん製麺所につれて頂いた。麺がしっかりしていてとても美味しい。今度このBlogに載せるためにまた行かねば。
今回は前回の時に作成した強制シャットダウンにカウントダウン機能を追加する。カウントダウンするということはそれを表示するものが必要。使い慣れているWindowsFormで実装する事にする。Visual StudioのインストールはできないPCの為、テキストエディタでちまちまとがんばった。
メインフォームクラス
画面構成は単純に、小さい画面の中央にラベルを配置した。最大化・最小化ボタンは非表示、サイズ変更も不可とする。Imports System.Windows.Forms Imports System.Drawing Public Class MainForm Inherits Form Public Sub New() InitializeForm() End Sub Private Sub InitializeForm() _lblMessage = New Label _lblMessage.Location = New Point(10, 30) _lblMessage.Size = New Size(220, 32) Me.Controls.Add(_lblMessage) Me.MaximizeBox = False Me.MinimizeBox = False Me.FormBorderStyle = FormBorderStyle.FixedSingle Me.StartPosition = FormStartPosition.CenterScreen Me.Size = New Size(240, 120) End Sub Private _lblMessage As Label End Classこれに残りの秒数を受け取るメソッドが必要だろう(本当は開発オフ中にそのメソッドも実装したが、失敗しているようなのでここには載せない)。ここで気がついたが、右上の「×」ボタンも無効にしないとならないかもしれない。
カウントダウンクラス
次はカウントダウンするクラス。Timerクラスを使用して一定間隔で。実はTimerクラスは以下3つが存在する。- System.Windows.Forms.Timerクラス
- System.Threading.Timerクラス
- System.Timers.Timerクラス
Imports System.Threading Public Class CountDown Private ReadOnly period As Integer Private _remaind As Integer Public Sub New(ByVal period As Integer) Me.period = period End Sub Public Sub Start(ByVal remaind As Integer) _remaind = remaind Dim callback As New TimerCallback(AddressOf DoCountDown) Dim timer As Timer = New Timer(callback, Nothing, 0, period) End Sub Private Sub DoCountDown(ByVal state As Object) _remaind -= Me.period OnTick(New TickEventArgs(_remaind)) End Sub Protected Sub OnTick(e As TickEventArgs) RaiseEvent Tick(Me, e) End Sub Public Event Tick(ByVal sender As Object, e As TickEventArgs) End Class Public Class TickEventArgs Inherits System.EventArgs Private _remaind As Integer Public Sub New(ByVal remaind As Integer) _remaind = remaind End Sub Public ReadOnly Property Remaind As Integer Get Return _remaind End Get End Property End Class指定の一定間隔(ミリ秒)でTickイベントが発生する。このイベントをハンドルして画面に残り秒数を渡せばよいだろう。
今回はここで時間切れ。後半はテキストエディタでの開発に疲れてきた。やはりGUIアプリケーションをテキストエディタのみで行うのは厳しい。もうそろそろ開発可能なノートPCが欲しいところ。あ、最近新しいOSが発売されたなー。
ランチはまんでがん製麺所につれて頂いた。麺がしっかりしていてとても美味しい。今度このBlogに載せるためにまた行かねば。
コメント
コメントを投稿