-5

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

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

C# 代码也被接受。

4

2 回答 2

4

您可以TextInfo用于此目的

System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase("abc");
于 2013-07-27T14:48:04.350 回答
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

于 2013-07-27T19:00:27.890 回答