我希望当用户键入一个句子时,程序应该自动将其更正为 ProperCase 或 Sentence Case。为了实现这一点,我在特定文本框的 TextChanged 事件中使用了 vbStrConv.ProperCase。但问题是它不允许在除单词开头之外的任何地方输入大写字符。
它不应该改变手动输入的大写字符的大小写,我的意思是如何让用户也能够输入大写字符?
C# 代码也被接受。
您可以TextInfo
用于此目的
System.Globalization.CultureInfo.CurrentCulture.TextInfo.ToTitleCase("abc");
您将不得不使用代码来执行此操作,因为您希望行为无法通过框架方法获得。就像是
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。