2012-01-18 13 views
-1

私はTextBoxSentence 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プロパティがあり、このプロパティの値の1つはcapitalizeです。テキスト入力要素に適用すると、各単語の最初の文字を大文字にします。

0

この場合、cboDestinationとtxtUserという2つのコントロールがあります。あなたが手紙をタイプしている間、それはあなたが望むものを作ります。

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 
関連する問題