以前、同様のテーマで質問し(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にカーソルを移動させたときに「全選択」状態にする。(ここで終わり)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/13 08:16
2020/07/13 08:19 編集
2020/07/13 09:00