2012-01-18 3 views
-1

나는 TextBox으로 텍스트를 입력하여 Sentence Case(ProperCase)으로 입력하고 싶습니다. 그러나 Lost Focus 또는 KeyPress과 같은 이벤트에 코드를 쓰고 싶지는 않습니다.대소 문자 또는 대소 문자가있는 텍스트 상자

기본적으로 사용자가 입력하거나 텍스트 상자에 입력 할 때마다 모든 단어의 첫 글자는 자동으로 UpperCase으로 변환됩니다.

+0

나는 틀릴 수도 있지만 텍스트를 이벤트를 사용하여 입력하고 이에 따라 텍스트를 업데이트하므로 텍스트 상자의 값을 확인하는 것이 유일한 방법이라고 생각합니다. –

+0

Culture Class를 사용하여 시도했지만 처리시 무거울 것이라고 생각합니다. –

+0

Win API 코딩이 있습니다 –

답변

4

이벤트에서 일부 코드를 삽입하지 않고 WinForms에서이 작업을 수행하는 방법을 모르겠습니다. TextBox의 CharacterCasing 속성을 사용하면 입력 한 모든 문자를 대문자 또는 소문자로 강제로 바꿀 수 있지만 올바른 대문자 소문자는 사용할 수 없습니다. 동일한 코드에 이벤트의 번호를 부착

TextBox1.Text = StrConv(TextBox1.Text, VbStrConv.ProperCase) 

보다 일반적인 핸들러를 여러 텍스트 상자를 통해이 작업을 수행하는 것을 포함한다 : 덧붙여, 그것은 단 한 줄의 코드는 이벤트에 그것을 할 수있어

'Attach multiple events to this handler 
Private Sub MakeProperCase(sender As Object, e As EventArgs) Handles _ 
    TextBox1.LostFocus, TextBox2.LostFocus, TextBox3.LostFocus 

    'Get the caller of the method and cast it to a generic textbox 
    Dim currentTextBox As TextBox = DirectCast(sender, TextBox) 
    'Set the text of the generic textbox to Proper Case 
    currentTextBox.Text = StrConv(currentTextBox.Text, VbStrConv.ProperCase) 

End Sub 

ASP.NET에서 일 수 있습니다. without code; text-transform이라는 CSS 속성이 있는데이 속성의 값 중 하나는 capitalize입니다. 텍스트 입력 요소에 적용되면 각 단어의 첫 글자를 대문자로 만듭니다.

0

이 경우 두 개의 컨트롤 (cboDestination 및 txtUser)이 있습니다. 글자를 입력하는 동안 원하는 것을 만들 수 있습니다.

Private Sub properCase_TextChanged(sender As Object, e As System.EventArgs) _ 
     Handles cboDestination.TextChanged, txtUser.TextChanged 
     Dim n As Integer = sender.SelectionStart 
     sender.Text = StrConv(sender.Text, VbStrConv.ProperCase) 
     sender.SelectionStart = n 
End Sub