DOBON.NET DOBON.NETプログラミング掲示板過去ログ

DataGridViewでのテキスト編集時について

環境/言語:[VB2005、WindowsXP]
分類:[.NET]

お世話になります。

DataGridView上のセル編集を行うためのやり方をDobonさんのHP(DataGridViewでセルの編集に使われているテキストボックスを取得する)を参考にテキストボックスにルールに基づいた値を入れることができるようになりました。

ただ、実際に編集を行う時、編集初期時に文字列が全選択状態になってしまいます。
この状態を回避したいのですが(カーソルを文字列の最後に持っていきたい)、
どうすればいいのでしょうか?(SelectionLength = 0を入れてみたりしたのですが、上手くいきませんでした。)

どなたかヒントいただけないでしょうか。

宜しくお願いいたします。
1つの方法として、カスタム列とカスタムセルとカスタム編集コントロールを自作するやり方が考えられます。

参考URL
 http://dobon.net/vb/dotnet/datagridview/maskedtextboxcolumn.html
の、MaskedTextBoxの部分をTextBoxに置き換えた上で、Public Class DataGridViewMaskedTextBoxEditingControlのPublic Sub PrepareEditingControlForEdit(ByVal selectAll As Boolean)メソッド内のコードをいじってみてはいかがでしょうか?

私はTextBoxで試したことはありませんが、NumericUpDownで同様の処理を行ったことがあります。

# もし外れていたらすみません。
H.K.R.さん、ご返答ありがとうございました。
やはり簡単にはいかないようですね。
システム全体を見直しつつ、下記の件を試してみたいと思います。
まずは、解決済みとさせていただきます。

ありがとうございました。

■No23351に返信(H.K.R.さんの記事)
> 1つの方法として、カスタム列とカスタムセルとカスタム編集コントロールを自作するやり方が考えられます。
>
> 参考URL
>  http://dobon.net/vb/dotnet/datagridview/maskedtextboxcolumn.html
> の、MaskedTextBoxの部分をTextBoxに置き換えた上で、Public Class DataGridViewMaskedTextBoxEditingControlのPublic Sub PrepareEditingControlForEdit(ByVal selectAll As Boolean)メソッド内のコードをいじってみてはいかがでしょうか?
>
> 私はTextBoxで試したことはありませんが、NumericUpDownで同様の処理を行ったことがあります。
>
> # もし外れていたらすみません。
解決済み!
2008/11/13(Thu) 14:37:25 編集(投稿者)

解決済みになってますが一応。

ザッと読みましたが、普通にセルの編集をしようとした時、
全選択されているのを回避したい。という事かと思いました。

でしたら、以下の内容で回避出来るはずです。
(私もSelectionLengthで回避しようとして無理だったので、
 これで回避しました)

私はCellEnterイベントに入れてます。

'' Hogeフィールドの場合は、編集モードを終了してカーソルを一番後ろにする
If e.ColumnIndex = 0 Then
Me.dgvMeisai.BeginEdit(False)
Else
Me.dgvMeisai.BeginEdit(True)
End If
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板