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
 
  |