質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

Q&A

解決済

1回答

2412閲覧

フォーカスが移動したときに全選択の状態にしたい(2)

Umeda2019

総合スコア14

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

VB.NET

Microsoft Visual Basic .NETのことで、Microsoft Visual Basic(VB6)の後継。 .NET環境向けのプログラムを開発することができます。 現在のVB.NETでは、.NET Frameworkを利用して開発を行うことが可能です。

0グッド

0クリップ

投稿2020/07/13 05:17

以前、同様のテーマで質問し(2020/07/07)、回答いただいたコードを別のFormで応用しています。
1回目に日付を入力したときは問題なく入力できました。
例えば、「伝票日付(MaskedTextBox)」には今日の日付「2020/07/13」が表示されていますが、そこへカーソル移動後「2020/06/01」とそのまま入力することができます。
ところが、もう一度カーソルを「伝票日付(文字が反転しており、全選択状態と思われます)」に移動し、日付を入力しようとすると最初の1文字目しか入りません。そこでBackSpaceを1回押すと、「0200/60/1_」と表示されています。ここで一文字目に「2」を入れると「2020/06/01」となります。
2回目以降も全選択状態で入力させるにはどのようにすればよろしいでしょうか。
visual studio 2019を利用しています。

Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load '処理する日付をセット Dim 伝票日付 = DateTime.Now Me.伝票日付.Text = Date.Now Me.KeyPreview = True AddHandler Me.伝票日付.Enter, AddressOf TextBoxes_Enter End Sub Protected Overrides Sub OnKeyPress(e As KeyPressEventArgs) MyBase.OnKeyPress(e) ' Enter キーで移動する処理 If e.KeyChar = vbCr Then ProcessTabKey((Control.ModifierKeys And Keys.Shift) = 0) e.Handled = True End If End Sub Private Sub TextBoxes_Enter(ByVal sender As Object, e As EventArgs) BeginInvoke(Sub(ctl As Object) Dim box As TextBoxBase = TryCast(ctl, TextBoxBase) If box IsNot Nothing Then box.SelectAll() End If End Sub, sender) End Sub 'TextBoxにカーソルを移動させたときに「全選択」状態にする。(ここから始まり) Private m_bFlag As Boolean = False ' Enterイベント Private Sub 伝票日付_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 伝票日付.Enter 伝票日付.SelectAll() If Control.MouseButtons <> Windows.Forms.MouseButtons.None Then m_bFlag = True End If End Sub ' MouseDownイベント Private Sub 伝票日付_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles 伝票日付.MouseDown If m_bFlag Then 伝票日付.SelectAll() m_bFlag = False End If End Sub 'TextBoxにカーソルを移動させたときに「全選択」状態にする。(ここで終わり)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

伝票日付_Enter/伝票日付_MouseDown の処理は不要です。

--追記--
MASK に日付を指定して ENTER キーで移動すると現象が発生しますね。

OnKeyPress の処理を削除して

VB.NET

1 Protected Overrides Sub OnKeyDown(e As KeyEventArgs) 2 MyBase.OnKeyDown(e) 3 If e.KeyCode = Keys.Enter Then 4 ProcessTabKey((Control.ModifierKeys And Keys.Shift) = 0) 5 e.Handled = True 6 e.SuppressKeyPress = True 7 End If 8 End Sub

に変えてみてください。

投稿2020/07/13 08:00

編集2020/07/13 08:40
KOZ6.0

総合スコア2707

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Umeda2019

2020/07/13 08:16

回答ありがとうございます。 「'TextBoxにカーソルを移動させたときに「全選択」状態にする。(ここから始まり)」以下を全て削除してみましたが、状態に変化はありませんでした。
KOZ6.0

2020/07/13 08:19 編集

Form1_Load/OnKeyPress/TextBoxes_Enter だけのコードで現象が発生しますか?
Umeda2019

2020/07/13 09:00

ありがとうございます。 「追記」いただいた箇所を修正しましたところ、狙い通りの動きとなりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問