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に載せるためにまた行かねば。
コメント
コメントを投稿