• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:NumericUpDownでキャレット移動)

NumericUpDownでキャレット移動

このQ&Aのポイント
  • VB.NET VisualStudio2017でWindowsアプリケーションを開発しており、テキストボックスがフォーカスされた際には入力済の文字列を全選択し、その状態で任意の場所をクリックするとキャレットを移動する方法を探しています。
  • TextBoxではGetCharIndexFromPositionメソッドを使用してキャレットの移動ができますが、NumericUpDownコントロールではこのメソッドが存在しないため、他の方法を探しています。
  • Windows APIのSendMessageメソッドも調査しましたが、TextBox向けの事例しか見つかりませんでした。NumericUpDownコントロールでキャレット移動する良い方法をご存知の方がいらっしゃれば、教えていただきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • kkkkkm
  • ベストアンサー率66% (1721/2591)
回答No.3

> ご紹介いただいたサイトではSelectAllメソッドが使用されていますが、NumericUpDownコントロールにはSelectAllメソッドはありません。 以下の二つの方法があるようです。 NumericUpDown1.Select(0, NumericUpDown1.Text.Length) CType(NumericUpDown1.Controls(1), TextBox).SelectAll()

scutotto
質問者

お礼

NumericUpDown単体で試すと取得したcharIndexの精度はいまいちでしたが、 お客様が一番求められている画面の数値コントロールは明細のグリッド上のコントロールで、 その画面のコントロールで上手くいったので解決とします。ありがとうございました。 該当の明細コントロール上の数値コントロールは当初からスピンボタンが表示されていないものだったため、charIndexの精度が保たれたものと解釈しました。 いろいろとお知恵を拝借しありがとうございました。

その他の回答 (2)

  • kkkkkm
  • ベストアンサー率66% (1721/2591)
回答No.2

> これと同じことをNumericUpDownコントロールで行いたいのですが、 先に紹介したサイトの方法ではできなかったということでしょうか? charIndexは求めませんが別の手法でできてると思いますが…。

scutotto
質問者

補足

kkkkkm様 コメントありがとうございます。 >先に紹介したサイトの方法ではできなかったということでしょうか? そうですね。出来なかったです。 ご紹介いただいたサイトではSelectAllメソッドが使用されていますが、NumericUpDownコントロールにはSelectAllメソッドはありません。 NumericUpDownコントロールで紹介いただいたサイトのコードを適用してもSelectAllメソッドのところでエラーとなるので、その箇所をコメントアウトするとフラグのOn Offの処理しか残りませんので・・・。 NumericUpDownコントロールに12345といった5桁の数値を設定して5の右側の位置でMouseDownしても1の左側にキャレットが移動してしまいます。

  • kkkkkm
  • ベストアンサー率66% (1721/2591)
回答No.1

こちらの方法を試してみてはいかがでしょう。 GetCharIndexFromPositionは使わない方法です。 TextBoxをクリックした時に表示テキストを全選択する http://windyrings.jugem.jp/?eid=850

scutotto
質問者

補足

kkkkkm様 コメントありがとうございます。 少し説明が足りない部分があったかも知れませんが、 やりたいことはフォーカスを受取ってテキストが全選択された状態で、 そのテキストの任意の場所をマウスでクリックした際に、 クリックした場所にキャレットを移動したい、ということです。 上記のtxtTest.Select(charIndex, 0)の部分です。 これと同じことをNumericUpDownコントロールで行いたいのですが、 マウスのポイントから上記charIndexを求める手段が無くて困っています。

関連するQ&A