ネタ元:επιστημηさんとこのイベント連鎖 、とりこびとさんとこのとりあえず作ってみた。
やっぱ、ちょっとニッチなのかしらね(^^; 難しいというとりこびとさん声を聞いたのでちょっとVB.NETで作ってみました。
まずは、銭勘定コントロールから。
1: Namespace Wankuma.GennyControl
2:
3: Public Class 銭勘定
4: Inherits System.Windows.Forms.TextBox
5:
6: '次の銭勘定コントロールへ横流す
7: Public Event 横流し(ByVal value As Integer)
8:
9: 'お札の定数はEnumで持つとプロパティではコンボの選択できるし、
10: '直接指定でもインテリセンスが効く
11: Public Enum お札種類 As Integer
12: 壱万円 = 10000
13: 五千円 = 5000
14: 千円 = 1000
15: 五百円 = 500
16: 百円 = 100
17: 五十円 = 50
18: 十円 = 10
19: 五円 = 5
20: 一円 = 1
21: End Enum
22:
23: '銭勘定結果
24: Private 計算結果 As Integer = 0
25: '設定金額
26: Private 設定金額 As お札種類 = お札種類.一円
27:
28: 'コントロールのお札種類設定
29: Property お札金額() As お札種類
30: Get
31: Return 設定金額
32: End Get
33: Set(ByVal value As お札種類)
34: 設定金額 = value
35: End Set
36: End Property
37:
38: 'コンストラクタ
39: Public Sub New()
40: MyBase.New()
41:
42: Me.ReadOnly = True
43: Me.Text = 計算結果.ToString()
44: End Sub
45:
46: '計算メソッド
47: Public Sub 計算(ByVal value As Integer)
48: 計算結果 = Fix(value / CInt(設定金額))
49:
50: Me.Text = 計算結果.ToString()
51:
52: RaiseEvent 横流し(value Mod CInt(設定金額))
53: End Sub
54: End Class
55:
56: End Namespace
まま、ちょっとアレな使い方をしておりますが、enumで金額を定義しておいて、プロパティでお札の種類(金額)を設定できるようにしております。
で、呼び出し側はこんな感じ。
1: Public Class GennyForm
2:
3: Private Sub GennyForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
4: AddHandler 壱万円.横流し, AddressOf 五千円.計算
5: AddHandler 五千円.横流し, AddressOf 千円.計算
6: AddHandler 千円.横流し, AddressOf 五百円.計算
7: AddHandler 五百円.横流し, AddressOf 百円.計算
8: AddHandler 百円.横流し, AddressOf 五十円.計算
9: AddHandler 五十円.横流し, AddressOf 十円.計算
10: AddHandler 十円.横流し, AddressOf 五円.計算
11: AddHandler 五円.横流し, AddressOf 一円.計算
12: End Sub
13:
14: Private Sub おあいそButton_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles おあいそButton.Click
15: Dim 数値のおあおそ金額 As Integer = 0
16: If Integer.TryParse(Me.おあいそ金額.Text, 数値のおあおそ金額) Then
17: Me.壱万円.計算(数値のおあおそ金額)
18: End If
19: End Sub
20: End Class
フォームはデザイナで銭勘定コントロールを貼り付けて、お札金額プロパティをそれぞれの行の金額にあわせただけです。
その後、FormLoadイベントでAddHandlerでイベントを追加して各コントロールの計算メソッドを呼ぶようにすると、壱万円の銭コントロールに対して計算!ってするだけで、すべて計算できまっせー的な感じ。
結果はこんな感じです。
2007/02/17 23:45 あわてて作ったとはいえ、名前付けがあんまりだったのでちょっと修正しました(^^;;;