VB.NET中的ProperCase

时间:2013-07-27 14:43:24

标签: c# vb.net

我希望当用户输入一个句子时,程序应该自动将其更正为ProperCase或Sentence Case。为了实现这一点,我在特定文本框的TextChanged事件中使用了vbStrConv.ProperCase。但问题是它不允许在除了单词的开头之外的任何地方输入高位字符。

它不应该改变手动键入的UPPER字符的情况,我的意思是如何让用户能够输入大写字符?

也接受C#代码。

2 个答案:

答案 0 :(得分:4)

您可以将TextInfo用于此目的

System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase("abc");

答案 1 :(得分:0)

您需要使用代码来执行此操作,因为您希望通过框架方法无法获得行为。像

这样的东西
Public Class Form1

    Private Sub TextBoxUppercaseFirstLetters(sender As Object, e As EventArgs)
        Dim tb = DirectCast(sender, TextBox)
        Dim s = tb.Text
        Dim cursorPos = tb.SelectionStart

        Dim wb = (" ,;:.'""" & vbCrLf).ToCharArray()

        Dim t = ""
        For i = 0 To s.Length - 1
            If i = 0 Then
                t = CStr(s(i)).ToUpper()
            Else
                If wb.Contains(s(i - 1)) Then
                    t &= CStr(s(i)).ToUpper()
                Else
                    t &= s(i)
                End If
            End If
        Next

        tb.Text = t
        tb.SelectionStart = cursorPos

    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        AddHandler TextBox1.TextChanged, AddressOf TextBoxUppercaseFirstLetters

    End Sub
End Class

这也使您有机会在不应该做的地方不要大写字母,例如: Gerard ’t Hooft