- PR -

DataGridView セルの値を評価し、エラーならば元のセルを選択する方法

1
投稿者投稿内容
saka
会議室デビュー日: 2008/10/30
投稿数: 3
投稿日時: 2008-10-30 09:53
<環境>Visual Basic 2005 Express Editions

お世話になります。

DataGridViewでセルに値を入力する毎にエラーチェックを行い、
正しくない場合は、セル遷移をせず元のセルにフォーカスを戻し
編集モードでテキストを全選択状態にするという処理を行いたいです。

Private Sub DataGridView1_CellValidating( _
ByVal sender As Object, _
ByVal e As System.Windows.Forms.DataGridViewCellValidatingEventArgs) _
Handles DataGridView1.CellValidating

If e.FormattedValue = "" Then
Exit Sub
End If

Select Case e.ColumnIndex
Case 1
Try
Date.Parse(e.FormattedValue)
Catch ex As Exception
e.Cancel = True
MsgBox("日付として正しくありません。", msgBoxStyle.Critical)

Exit Sub
End Try
Case 2
Try
Double.Parse(e.FormattedValue)
Catch ex As Exception
e.Cancel = True
MsgBox("数値として正しくありません。", msgBoxStyle.Critical)
Exit Sub
End Try
End Select

End Sub

けれども、
上記のようにエラーチェックを行い、現在のセルを編集状態で選択する為に
DataGridView1.CurrentCell = DataGridView1(e.ColumnIndex, e.RowIndex)
DataGridView1.BeginEdit(True)
という記述をエラーメッセージの後に追加しても
セルの値は選択されません。

どのようにすればセルの値は選択できるのでしょうか。

よろしくお願いします。
katu
会議室デビュー日: 2008/10/31
投稿数: 2
投稿日時: 2008-10-31 14:42
DataGridView1.CurrentCell = DataGridView1(e.ColumnIndex, e.RowIndex)
DataGridView1.BeginEdit(True)
上記の後は
e.Cancel = true;
使用したほうがいいと思いますが ^^
saka
会議室デビュー日: 2008/10/30
投稿数: 3
投稿日時: 2008-10-31 17:42
自己レスです。

セル遷移がキャンセルされた場合は、元のセルが編集状態だったのですが
まずはこの編集モードを終了させてあげてから、再度編集モードでテキストを全選択状態したらうまくいきました。

この方法が正しいのかどうかはわかりませんが・・・。

他に良い方法があればご指摘ください。
宜しくお願いします。


katuさんレスどうもありがとうございます。


松田聖子
会議室デビュー日: 2008/10/20
投稿数: 1
投稿日時: 2008-11-12 15:54
e.Cancel = true としてCellValidatingを抜ければOKだと思います。

CurrentCell = 〜 や
BeginEdit 等は必要無いのでは?
saka
会議室デビュー日: 2008/10/30
投稿数: 3
投稿日時: 2008-11-13 11:31

松田さんレスありがとうございます。

>e.Cancel = true としてCellValidatingを抜ければOKだと思います。

う〜ん、「OK」ではないんで、質問してみました。
そのままだとセルの値が全選択状態にならないんですよね。


>CurrentCell = 〜 や
>BeginEdit 等は必要無いのでは?

このコードを実装しても、結局全選択状態にならなかったんで
必要ないといわれればそうなんですけどね。



1

スキルアップ/キャリアアップ(JOB@IT)