- - PR -
DataGridView セルの値を評価し、エラーならば元のセルを選択する方法
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 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) という記述をエラーメッセージの後に追加しても セルの値は選択されません。 どのようにすればセルの値は選択できるのでしょうか。 よろしくお願いします。 |
|
投稿日時: 2008-10-31 14:42
DataGridView1.CurrentCell = DataGridView1(e.ColumnIndex, e.RowIndex)
DataGridView1.BeginEdit(True) 上記の後は e.Cancel = true; 使用したほうがいいと思いますが ^^ |
|
投稿日時: 2008-10-31 17:42
自己レスです。
セル遷移がキャンセルされた場合は、元のセルが編集状態だったのですが まずはこの編集モードを終了させてあげてから、再度編集モードでテキストを全選択状態したらうまくいきました。 この方法が正しいのかどうかはわかりませんが・・・。 他に良い方法があればご指摘ください。 宜しくお願いします。 katuさんレスどうもありがとうございます。 |
|
投稿日時: 2008-11-12 15:54
e.Cancel = true としてCellValidatingを抜ければOKだと思います。
CurrentCell = 〜 や BeginEdit 等は必要無いのでは? |
|
投稿日時: 2008-11-13 11:31
松田さんレスありがとうございます。 >e.Cancel = true としてCellValidatingを抜ければOKだと思います。 う〜ん、「OK」ではないんで、質問してみました。 そのままだとセルの値が全選択状態にならないんですよね。 >CurrentCell = 〜 や >BeginEdit 等は必要無いのでは? このコードを実装しても、結局全選択状態にならなかったんで 必要ないといわれればそうなんですけどね。 |
1