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

TextBox内のFocusしているカーソルを・・

環境/言語:[環境(Windows 2000) 使用言語 (VB.NET)]
分類:[.NET]

お世話になります。
TextBox内のFocusしているカーソルが有ります。
文字列が入っている状態で
矢印の上キー押下で左に一つカーソルがずれます。
矢印の左キー押下で左に一つカーソルがずれます。

上下左右、キーのどれを押下しても
カーソルが移動しない方法(一番右に有る状態)は有りますでしょうか?
ご存知の方是非教えて下さい。
宜しくお願い致します。
こんにちは中です。

それってすごく使いにくいと思いませんか?
標準のWindowsコントロールの動きを制御しようとか思わないほうがいいですよ。

KeyDownイベントで無視すればいけると思いますよ。
おはよう御座います。

このTextBoxは、DataGrid内のCurrentCellの座標に出していて、
このTextBoxに入力した値を、矢印キー,Enter,Click等で反映させています。
ですので、矢印キー押下ではExcelの様にセル移動のイメージで操作しています。
Excelはセル移動の際はセル内にFocusが当たっていませんが、
私が作成しているTextBoxは、常にFocusが当たっています。
ですので入力時は、DeleteかBackSpaceとマウスのClickで入力位置を操作するイメージです
→キー押下では、隣のセルに移動してしまうので、カーソル移動は不要です。
でも、←キーや↑キーでセル移動してカーソルは一つ左にずれてしまいます。
ですので、カーソルは常に一番右に置いておきたいのです。
まずは、落ち着いて質問してください。
これは、
 http://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=al2&namber=7597&rev=&no=0
と同じ状況下と考えて宜しいですね。

■No7596に返信(もんさんの記事)
> 上下左右、キーのどれを押下しても
> カーソルが移動しない方法(一番右に有る状態)は有りますでしょうか?

もう一方(■No7597)から察するに、こんな感じで良いのでは? :-p

Private Sub TextBox1_KeyDown(ByVal sender As Object, ByVal e As KeyEventArgs) Handles TextBox1.KeyDown
    Select Case e.KeyCode
        Case Keys.Up
            '/ TODO:ココに、DataGrid上でTextBoxが↑に移動する処理を追加
            e.Handled = True
        Case Keys.Left
            '/ TODO:ココに、DataGrid上でTextBixが←に移動する処理を追加
            e.Handled = True
        Case Keys.Right
            '/ TODO:ココに、DataGrid上でTextBoxが→に移動する処理を追加
            e.Handled = True
        Case Keys.Down
            '/ TODO:ココに、DataGrid上でTextBoxが↓に移動する処理を追加
            e.Handled = True
    End Select
End Sub

■No7614に返信(もんさんの記事)
> →キー押下では、隣のセルに移動してしまうので、カーソル移動は不要です。
> でも、←キーや↑キーでセル移動してカーソルは一つ左にずれてしまいます。
> ですので、カーソルは常に一番右に置いておきたいのです。

カーソルは、常に1番右というのはこういうことではないですか :)
TextBox1.SelectionStart = TextBox1.Text.Length
色々相談に乗って下さいまして有難う御座いました。m(_ _)m

教えてくださった方法を色々試しましたが上手く行かなく、
私の説明不足で伝えきれなかった事をお詫びいたします。

色々教えてくださった方法以外試し、
DataGlidのPaintEventにFocusを指定する事で解決致しました。

色々有難う御座いました。m(_ _)m
これからも宜しくお願い致します。
解決済み!

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