Option Compare Binary
Option Explicit On
Option Strict On
Imports System.Globalization
Public Class inputTextBox
Public ADdate As String '西暦
Public Wadate As String '和暦
''Private Sub New()
'' 'このメソッドを書くとコンポーネントとしてプロジェクトに追加できない
'' ' この呼び出しは、Windows フォーム デザイナで必要です。
'' InitializeComponent()
'' ' InitializeComponent() 呼び出しの後で初期化を追加します。
''End Sub
Private Sub inputTextBox_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Height = Me.MaskedTextBox.Height
'これを書かないと「西暦55年12月12日」となってしまう↓ 「教えてgooのコピペ↓」
Dim myCI As New Globalization.CultureInfo("Ja-jp", True)
Dim myDTFmtInfo As Globalization.DateTimeFormatInfo = myCI.DateTimeFormat
Dim jpCal As New JapaneseCalendar
myDTFmtInfo.Calendar = jpCal
myCI.DateTimeFormat = myDTFmtInfo
Application.CurrentCulture = myCI
'これを書かないと「西暦55年12月12日」となってしまう↓ 「教えてgooのコピペ↑」
End Sub
Private Sub TextBox_TextChanged(ByVal sender As System.Object, ByVal e As System.EventArgs)
End Sub
Private Sub MaskedTextBox_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles MaskedTextBox.KeyPress
If MaskedTextBox.Mask = "AA90年90月90日" Then
'入力キーを制限する
If e.KeyChar = CChar("s") Then
Me.MaskedTextBox.Text = "昭和"
ElseIf e.KeyChar = CChar("t") Then
Me.MaskedTextBox.Text = "大正"
ElseIf e.KeyChar = CChar("m") Then
Me.MaskedTextBox.Text = "明治"
ElseIf e.KeyChar = CChar("h") Then
Me.MaskedTextBox.Text = "平成"
End If
If (e.KeyChar < "0"c Or e.KeyChar > "9"c) Or _
e.KeyChar <> CChar("s") Or _
e.KeyChar <> CChar("t") Or _
e.KeyChar <> CChar("m") Or _
e.KeyChar <> CChar("h") Then
e.Handled = True 'MaskedTextBoxには効かないみたい 何かオーバライドする必要が?
End If
End If
End Sub
Private Sub MaskedTextBox_TypeValidationCompleted(ByVal sender As Object, ByVal e As System.Windows.Forms.TypeValidationEventArgs) Handles MaskedTextBox.TypeValidationCompleted
If Not e.IsValidInput Then
Me.MaskedTextBox.Text = ""
'e.Cancel = True ’これを有効にするとなんだか動作がおかしい
Exit Sub
End If
Select Case MaskedTextBox.Mask
Case "AA90年90月90日"
'和暦
Debug.Print(Me.MaskedTextBox.Text)
'正確な和暦に戻す'これで戻るみたい
'@ITを参考に↓
Dim culture As CultureInfo = New CultureInfo("ja-JP", True)
culture.DateTimeFormat.Calendar = New JapaneseCalendar()
Dim target As String = Me.MaskedTextBox.Text
Dim result As DateTime = DateTime.ParseExact(target, "ggyy年M月d日", culture)
Debug.Print(result.Year.ToString)
Debug.Print(result.ToLongDateString())
'@ITを参考に↑
'西暦を取得する
ADdate = result.Year & "/" & result.Month & "/" & result.Day
'正確な値を書き戻す
Me.MaskedTextBox.Text = result.ToString("ggyy年MM月dd日")
Wadate = result.ToString("ggyy年MM月dd日")
Case "そのほか"
'etc
End Select
End Sub
End Class
|