VB2005環境です。
DataGridViewコントロールの、列ごとに入力制限をかけたいと
思っています。
たとえば、1列目は数字のみ入力可能、2行目は半角英数字…と
いった具合です。
また、できればある列にはIMEMODEを設定してやりたいとも
思っています。
KeyDownイベントで、列の名前ごとにif文をかまして、文字を弾けば
いいかと思っていたのですが、思ったより手間で、コピペでの入力
には対応できません。
プロパティでなんとかならないかと思ったのですが、デザイナからは
そのようなものは見つかりませんでした。
何かシンプルに入力制御をかけられる方法はないでしょうか?
ご教授お願いいたします。
No.1ベストアンサー
- 回答日時:
vb2005は触った事がある位ですが・・・(vb2003も大差無いけど・・・)
DataGridView.CellValidating イベント と言うのが、.NET Framework version 2.0 で新しく追加されたらしくて、セルが入力フォーカスを失い、内容の検証が有効になった場合にイベントが発生するそうです。
チェックは入力が終わった段階で行いますので、入力途中は制限しません。
これが正しい使い方かわからないので、間違っていたら誰か訂正してください。
Imports System.Text.RegularExpressionsで、正規表現が使えるようにしてください。
Private Sub DataGridView1_CellValidating(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellValidatingEventArgs) Handles DataGridView1.CellValidating
'新しいレコードの行ならチェックしない
If DataGridView1.Rows(e.RowIndex).IsNewRow Then Return
DataGridView1.Rows(e.RowIndex).ErrorText = ""
Select Case e.ColumnIndex
Case 0
If Regex.IsMatch(e.FormattedValue.ToString(), "^[0-9]+$") = False Then
e.Cancel = True
DataGridView1.Rows(e.RowIndex).ErrorText = "数字だけにしてね"
End If
Case 1
If Regex.IsMatch(e.FormattedValue.ToString(), "^[a-zA-Z0-9]+$") = False Then
e.Cancel = True
DataGridView1.Rows(e.RowIndex).ErrorText = "半角英数にしてね"
End If
End Select
End Sub
IMEの設定の変更は、こんなでいいのか?
Private Sub DataGridView1_CellStateChanged(ByVal sender As System.Object, ByVal e As System.Windows.Forms.DataGridViewCellStateChangedEventArgs) Handles DataGridView1.CellStateChanged
If e.Cell.Selected = True Then
Select Case e.Cell.ColumnIndex
Case 0, 1
DataGridView1.ImeMode = Windows.Forms.ImeMode.Off
Case 2
DataGridView1.ImeMode = Windows.Forms.ImeMode.On
End Select
End If
End Sub
回答ありがとうございます。
入力の段階で弾きたいので、CellValidating だとちょっと
タイミング的に遅いようです。
しかし、ロジックを参考にさせていただきました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
ちょっと先の未来クイズ第2問
9月9日(月)に発表される「第3回子どもマネー川柳」に入賞する川柳を考えてこちらに投稿してください。
-
フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
あなたが普段思っている「これまだ誰も言ってなかったけど共感されるだろうな」というあるあるを教えてください
-
映画のエンドロール観る派?観ない派?
映画が終わった後、すぐに席を立って帰る方もちらほら見かけます。皆さんはエンドロールの最後まで観ていきますか?
-
海外旅行から帰ってきたら、まず何を食べる?
帰国して1番食べたくなるもの、食べたくなるだろうなと思うもの、皆さんはありますか?
-
天使と悪魔選手権
悪魔がこんなささやきをしていたら、天使のあなたはなんと言って止めますか?
-
DataGridViewの桁数制限に関して
Visual Basic(VBA)
-
DataGridViewに空白がある場合はエラーにしたい
Visual Basic(VBA)
-
DataGridViewの内容をDBに反映する時
Visual Basic(VBA)
-
-
4
【C#】DataGridViewの最大列数について
システム
-
5
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
6
「指定されたキャストは有効ではありません。」とエラーが出てしまいます。
Microsoft ASP
-
7
DataGridViewでセルクリックイベントを発生させるには
Visual Basic(VBA)
-
8
データグリッドビューの一番最初の行に列を追加したい
Visual Basic(VBA)
-
9
DataGridViewのセル編集完了後に値を設定するには
Visual Basic(VBA)
-
10
DataGridViewでyyyy/MM/dd
Visual Basic(VBA)
-
11
C# DataGridViewで複数選択したセルに同じ値を一括で入力するには
C言語・C++・C#
-
12
初心者)DataGridViewの入力桁数を制限したいのですが
Visual Basic(VBA)
-
13
.NET3.5におけるキーボードの「全角/半角」キーは、Keys列挙体の何に対応している?
C言語・C++・C#
-
14
DataGridViewのチェックボックスのON、OFFの判定方法
C言語・C++・C#
-
15
C# dataGridViewの値だけクリア
C言語・C++・C#
-
16
[VB.net] DataGridViewの列ヘッダー複数行表示に伴う不具合?について
Visual Basic(VBA)
-
17
c#でTextBoxの入力制限
C言語・C++・C#
-
18
VB.NET Excelを読み込んでDataTableに格納し、DBにデータをINSERTする
Microsoft ASP
-
19
コンボボックスでドロップダウンリストにしたときに・・・・
Visual Basic(VBA)
-
20
DataGridViewの、選択されている行を取り出したい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
初歩的な事だと思います。 Sub...
-
Excel-VBAでInputBox+Pulldown...
-
「イ分」・・・フンという文字...
-
テキストボックスの番号を使っ...
-
数字以外の入力をエラーにする...
-
VBAでInputBoxの再入力をさせる...
-
excel vba でユーザーフォーム...
-
DataGridViewの桁数制限に関して
-
チェックボックスのCheckedとCh...
-
アクセスのマクロ
-
DataGridView 列ごとの入力制限
-
エクセルVBA テキストボックス...
-
ExcelVBAのユーザーフォームで...
-
教えて!全角文字「μ」の半角
-
python:paiza.ioでのinput関数...
-
TextBoxから数字が文字...
-
アルファベットGの小文字の入力
-
入力フォームの値をQRコードで...
-
c#でTextBoxの入力制限
-
accessで該当するレコードがな...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA テキストボックス...
-
テキストボックスの番号を使っ...
-
初歩的な事だと思います。 Sub...
-
Excel-VBAでInputBox+Pulldown...
-
数字以外の入力をエラーにする...
-
VBAでInputBoxの再入力をさせる...
-
VBA R1C1形式で変数の入力について
-
EXCEL VBA で指定した範囲に入...
-
c#でTextBoxの入力制限
-
TextBoxから数字が文字...
-
教えて!全角文字「μ」の半角
-
DataGridViewの桁数制限に関して
-
excel vba でユーザーフォーム...
-
ExcelVBAのユーザーフォームで...
-
入力フォームの値をQRコードで...
-
アクセスのマクロ
-
エディットボックスの入力制限...
-
「イ分」・・・フンという文字...
-
DataGridView 列ごとの入力制限
-
複数行の入力を受け取る方法
おすすめ情報