我希望当用户输入一个句子时,程序应该自动将其更正为ProperCase或Sentence Case。为了实现这一点,我在特定文本框的TextChanged事件中使用了vbStrConv.ProperCase。但问题是它不允许在除了单词的开头之外的任何地方输入高位字符。
它不应该改变手动键入的UPPER字符的情况,我的意思是如何让用户能够输入大写字符?
也接受C#代码。
答案 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