여기에 문제가 있습니다 : 전화 마스크에 MaskedTextBox를 사용하고 있습니다. 그러나 마스크는 2 가지 종류의 마스크를 받아 들여야 만합니다. 기본 마스크는 (00) 0000-0000과 같지만 때로는 마스크가이 (00) 0000-00000과 같이 하나 더 많은 슬롯을 가질 필요가 있습니다. 이 프로세스는 동적이어야합니다. 사용자가 10자를 초과하여 입력하면 MaskedTextBox는 자신의 마스크를 변경합니다. 얼마 전에 VB.Net을 사용하여 만들었지 만 지금은 C#을 사용하여이 작업을 수행해야합니다.MaskedTextBox의 마스크를 동적으로 변경하는 방법
예전에 작성한 VB.NET을 사용한 예입니다.
Private Sub MaskedTextValidacao_Validating(sender As System.Object, e As System.ComponentModel.CancelEventArgs) Handles Me.Validating
Me.TextMaskFormat = MaskFormat.ExcludePromptAndLiterals
If Me.Text.Contains(" ") Or Me.Text.EndsWith(" ") Or Me.Text.StartsWith(" ") Then
Me.Text.Replace(" ", "")
End If
If Me.Text.Count.Equals(10) Or Me.MaskCompleted.Equals(True) Then
Me.BackColor = Color.LightGreen
Me.Text = Me.Text.TrimEnd
ElseIf Me.Text = "" Then
Me.BackColor = Color.White
Else
Me.BackColor = Color.LightCyan
End If
End Sub
이제 더 나은 것을 만들고 C#을 사용하려고합니다.
나를 도와 줄 사람이 있습니까? 내 말은, 그냥 붙 잡았으니 내게 빛을주세요!
문자열은 불변이다. 'Replace()'호출은 쓸모가 없다. 그것의'If'는 더 쓸모가 없습니다. – SLaks
당신은 열거 형을 사용하거나 생성하는 데 익숙합니까? 그런 식으로 마스크를 만들 수 있습니다. – MethodMan