+ YOSHIKI & Violet UK FAN SITE -Blind Tears- 管理人の日記 +

Blind Tears管理人こぅきの日記です☆彡
興味ある記事があればコメント・意見等お願いします☆

【VB.NET 2003】 DataGridで数字のみ入力可能にするには

2006年11月17日 20時29分18秒 | PC関連
DataGridのセルで数字のみ入力可能にするには、DataGridTextBoxColumnのTextBoxのKeyPressイベントをハンドリングする方法がWebにはたくさん掲載されているが、ゴリゴリ、プログラムを組まなくても、DataGridTextBoxColumnのFormatプロパティに0000等の書式フォーマットを設定するのみで実装可能である。

詳しくは、画像をご覧下され。


一応、プログラムでKeyPressイベントをハンドルする方法のサンプルも載せます。
以下、ソース。




Private Sub Form_Load(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles MyBase.Load

' ***********************************************
' DataGrid2の工程番号・工数は、数字のみ入力可とする
' ***********************************************
' KeyPressイベントハンドラを追加
DataGridTextBoxColumn21.TextBox.ImeMode = ImeMode.Off
DataGridTextBoxColumn24.TextBox.ImeMode = ImeMode.Off
AddHandler DataGridTextBoxColumn21.TextBox.KeyPress, AddressOf dgtb_KeyPress
AddHandler DataGridTextBoxColumn24.TextBox.KeyPress, AddressOf dgtb_KeyPress

End Sub

#Region "DataGrid2上でのKeyPressイベントハンドラ"

Private Sub dgtb_KeyPress(ByVal sender As Object, _
ByVal e As System.Windows.Forms.KeyPressEventArgs)

' 0-9の文字と各種システムキーのみを許可する
Select Case e.KeyChar
Case "0"c To "9"c ' 0 ~ 9
Case Chr(Keys.Back), "."c ' BSキー, 小数点キー
Case Else
e.Handled = True
End Select

End Sub

#End Region

こんなん書くより、GUIでプロパティ設定で済む方が楽やろ…ちなみにコーディングですると、全角で入力すると、数字以外の文字列も入っちゃうんだよね~それに比べてプロパティ設定のほうは、書式設定だから、数値以外は入力しても消えるんです☆彡

【VB.NET】コンボボックスで補完機能(オートコンプリート)

2006年11月07日 18時17分06秒 | PC関連
今、会社で開発してるシステムでコンボボックスで補完できたらなと思って色々調べて実装しました。相変わらずの個人メモです。


' オーダ補完入力用
Private Sub CmbBox_Order3_KeyUp(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs) _
Handles CmbBox_Order3.KeyUp

Dim sTypedText As String
Dim iFoundIndex As Integer
Dim oFoundItem As Object
Dim sFoundText As String
Dim sAppendText As String

' オートコンプリートしないキーを設定
Select Case e.KeyCode
Case Keys.Back, Keys.Left, Keys.Right, Keys.Up, Keys.Delete, Keys.Down, Keys.Tab
Return
End Select

' 入力文字からコンボ内のコレクションを検索
sTypedText = CmbBox_Order3.Text
iFoundIndex = CmbBox_Order3.FindString(sTypedText)

' コレクション内に見つかったらオートコンプリート
If iFoundIndex >= 0 Then

oFoundItem = CmbBox_Order3.Items(iFoundIndex)
sFoundText = CmbBox_Order3.GetItemText(oFoundItem)
sAppendText = sFoundText.Substring(sTypedText.Length)
CmbBox_Order3.Text = sTypedText & sAppendText

' オートコンプリート部を選択状態にする
CmbBox_Order3.SelectionStart = sTypedText.Length
CmbBox_Order3.SelectionLength = sAppendText.Length

End If

End Sub