下記の通りコードを書きました。
フォーカスは、TabやEnterで「日付」→「開始日」→「終了日」の順で移動し、「終了日」の次は「日付」に戻ります。
起動時は、「日付」が全選択となるのですが、TabやEnterで移動しても「開始日」や「終了日」は全選択となりません。
マウスで移動すると全選択となり、以降はTabやEnterで移動しても全選択状態となります。つまりマウスで一度でも全選択状態としないといけないようです。
どのように書けばTabやEnterの移動で、最初から「開始日」や「終了日」を全選択状態とできますか。
ちなみに、「日付」はTextBox、その他はMaskedTextBoxです。
Private
1 2 '操作当日の年月だけの表示とします。 3 Dim 日付 = DateTime.Now 4 Me.日付.Text = Date.Now.ToString("yyyy-MM") 5 6 '処理する月の初日をセット 7 日付 = New Date(日付.Year, 日付.Month, 1) '指定年月での最初日 8 開始日.Text = 日付 9 10 '処理する月の末日をセット 11 日付 = New Date(日付.Year, 日付.Month, 1) '指定年月での最初日 12 日付 = 日付.AddMonths(1).AddDays(-1) '次月の1日前を計算 13 終了日.Text = 日付 14 15 End Sub 16 17 'TextBoxにカーソルを移動させたときに「全選択」状態にする。(ここから始まり) 18 Private m_bFlag As Boolean = False 19 20 ' Enterイベント 21 Private Sub 開始日_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 開始日.Enter 22 開始日.SelectAll() 23 If Control.MouseButtons <> Windows.Forms.MouseButtons.None Then 24 m_bFlag = True 25 End If 26 End Sub 27 28 ' MouseDownイベント 29 Private Sub 開始日_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles 開始日.MouseDown 30 If m_bFlag Then 31 開始日.SelectAll() 32 m_bFlag = False 33 End If 34 End Sub 35 36 Private m_bFlag2 As Boolean = False 37 38 Private Sub 終了日_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 終了日.Enter 39 終了日.SelectAll() 40 If Control.MouseButtons <> Windows.Forms.MouseButtons.None Then 41 m_bFlag2 = True 42 End If 43 End Sub 44 45 Private Sub 終了日_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles 終了日.MouseDown 46 If m_bFlag2 Then 47 終了日.SelectAll() 48 m_bFlag2 = False 49 End If 50 End Sub 51 52 Private m_bFlag3 As Boolean = False 53 54 Private Sub 日付_Enter(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles 日付.Enter 55 日付.SelectAll() 56 If Control.MouseButtons <> Windows.Forms.MouseButtons.None Then 57 m_bFlag3 = True 58 End If 59 End Sub 60 61 Private Sub 日付_MouseDown(ByVal sender As System.Object, ByVal e As System.Windows.Forms.MouseEventArgs) Handles 日付.MouseDown 62 If m_bFlag3 Then 63 日付.SelectAll() 64 m_bFlag3 = False 65 End If 66 End Sub 67 'TextBoxにカーソルを移動させたときに「全選択」状態にする。(ここで終わり)
よろしくお願いします。
回答2件
あなたの回答
tips
プレビュー