-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathNurmericTextBox.vb
141 lines (103 loc) · 3.58 KB
/
NurmericTextBox.vb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
Option Explicit On
Imports System.ComponentModel
Imports System.Windows.Forms
''' <summary>
''' 数値のみの入力を許可したテキストボックスの機能を提供する
''' </summary>
''' <remarks></remarks>
Public Class NurmericTextBox
#Region "プロパティ"
''' <summary>
''' 有効桁数プロパティ
''' </summary>
''' <remarks>
''' デフォルトは10000まで
''' </remarks>
Public Property NumberOfDigit As Integer = 5
#End Region
#Region "コンストラクタ"
''' <summary>
''' コンストラクタ
''' </summary>
''' <remarks></remarks>
Public Sub New()
' この呼び出しはデザイナーで必要です。
InitializeComponent()
' InitializeComponent() 呼び出しの後で初期化を追加します。
'IMEのONの無効化
ImeMode = ImeMode.Disable
End Sub
#End Region
#Region "イベント"
''' <summary>
''' OnPaintイベント
''' </summary>
''' <param name="e">Paintイベント</param>
''' <remarks>
''' 描画が必要なとき
''' </remarks>
Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
'Paintイベントを発生させる
MyBase.OnPaint(e)
End Sub
''' <summary>
''' KeyPressイベント
''' </summary>
''' <param name="e">KeyPressイベント</param>
''' <remarks>
''' キーが押されたとき
''' </remarks>
Protected Overrides Sub OnKeyPress(e As KeyPressEventArgs)
'KeyPressイベントを発生させる
MyBase.OnKeyPress(e)
'入力されたキーが数値以外 か テキストの内容の桁数が有効桁数よりも以上の時
If e.KeyChar > "9"c OrElse e.KeyChar < "0"c OrElse Text.Length >= NumberOfDigit Then
'入力キーがBackSpace以外の時のキーの入力イベントを処理済みにする
If e.KeyChar <> Chr(8) Then e.Handled = True
End If
End Sub
''' <summary>
''' OnValidatingイベント
''' </summary>
''' <param name="e">Validatingイベント</param>
''' <remarks>
''' 評価が必要なとき(ロストフォーカス)
''' </remarks>
Protected Overrides Sub OnValidating(e As CancelEventArgs)
'Validatingイベントを発生させる
MyBase.OnValidating(e)
'入力内容が空欄なら何もしない
If String.IsNullOrEmpty(Text) Then Return
'入力内容が数値以外 または 有効桁数より多い場合、ロストフォーカスしない
If Not IsNumeric(Text) OrElse Text.Length > NumberOfDigit Then
e.Cancel = True
End If
End Sub
''' <summary>
''' OnEnterイベント
''' </summary>
''' <param name="e">Enterイベント</param>
''' <remarks>
''' フォーカスが当たった時
''' </remarks>
Protected Overrides Sub OnEnter(e As EventArgs)
'Enterイベントを発生させる
MyBase.OnEnter(e)
'テキストボックスの中身を選択状態にする
SelectAll()
End Sub
''' <summary>
''' OnMouseDownイベント
''' </summary>
''' <param name="e">MouseDownイベント</param>
''' <remarks>
''' マウスボタンが下がった時
''' </remarks>
Protected Overrides Sub OnMouseDown(e As MouseEventArgs)
'MouseDownイベントを発生させる
MyBase.OnMouseDown(e)
'テキストボックスの中身を選択状態にする
SelectAll()
End Sub
#End Region
End Class