フォーム上のデータソースにバインドされた標準のDataGridViewを持つWindowsフォームVS2010 .NET 4プロジェクトがあります。WinFormsのDataGridView編集セル
グリッドには、クリックされた文字をポイントにして編集したいテキスト列があります。 通常のテキストボックス/エディタのように、調整したい文字をクリックします。可能であれば、UP/DOWNキーを使用して行間を移動したいが、テキスト全体を選択することなく同じ列内の同じ文字位置にカーソルを移動したいと思う。
私はいくつか試してみました:
DataGridView1.ClearSelectionを()
DataGridView1.BeginEdit(偽)
にBeginEditはちょうど別のものを意味し、テキストの末尾にカーソルを置きますクリックして編集用の文字位置をポイントします。
デベロッパーエクスプレッションのような商用のグリッドは、デフォルトでクリックするだけで正しい文字位置をクリックすることができますが、明らかに費用がかかります。
私はDataGridView1_EditingControlShowingイベント
If TypeOf e.Control Is System.Windows.Forms.DataGridViewTextBoxEditingControl Then
Dim tb As TextBox = e.Control
tb.SelectionStart = 5
tb.SelectionLength = 5
End If
で試してみました。しかし、これは何もしません。
調整が必要な文字の位置に移動するには、2回または3回のクリックを取り除こうとしています。
私はカスタムデータ列をまだ見ていません。
ご意見をいただければ幸いです。
優秀な答えは主ビットをし、私はこれを探していた年齢のために:私はそれはあなたがCellEnterイベントハンドラ内で作業する必要があるたselectionStartとSelectionLength設定することがわかったその後何
。それは上向きのビットをしませんが、私はそれを修正することができるかもしれません。前のセルを取得するためのアイデア。 –
私はちょうどこの非常に迅速にコンセプトを証明しました。(エディットコントロールの表示から)フォームレベルのプライベート変数に配置し、編集コントロールのleaveイベント中にSelectionStart値をフォームレベルのint変数に配置することによって、その後、グリッドの外にいったん私はintをチェックし、それは最後の編集コントロール位置を持っていました。あなたがそのサンプルのサブクラス化されたdgvに非常に簡単に似たようなものを置くことができるように、私はテストするために1分しかかかりませんでした。 –
Davidさん、ありがとうございました。私はキャレット位置を持っていますが、上下の矢印を使用すると次の行で編集モードにならないので、編集を設定してキャレットの位置を変更する方法がわかりません。私はEditOnEnterにEditModeを設定しようとしましたが、これはマウスのワンクリック編集を防ぎます。ニューカッスルのごめんなさい... –