VB6 中的适当大小写

Proper Casing in VB6

我正在用 VB6 做一个问答游戏。我需要文本框自动将第一个字母大写但是这个代码

Private Sub Anstxt_Change()
Anstxt.Text = StrConv(Anstxt.Text, vbProperCase)
End Sub

使单词倒置。所以它从“树”变成了“Seert”

我该如何更改?

注意事件Change发生时光标在文本框中的位置:在文本框的开始处。添加 Debug.Print 语句以查看在您键入时发生了什么:

Private Sub Anstxt_Change()
   Debug.Print StrConv(Anstxt.Text, vbProperCase)
   Anstxt.Text = StrConv(Anstxt.Text, vbProperCase)
End Sub

输出看起来像

T
T
Rt
Rt
Ert
Ert
Eert
Eert
Seert
Seert

这里有两点需要注意:Change 事件被触发了两次:一次是在键入时触发,一次是在更改 Change 中的文本框的值时触发] 事件。这让您知道在 Change 事件中操作文本框的文本不是一个好主意。我建议改为将此代码放在 LostFocus 事件中。

要注意的第二件事是,由于光标始终位于文本框的 start,因此您键入的字母会插入到现有字母的前面。所以在你改变文本框的.Text属性之后,你应该使用.SelStart方法将光标定位在文本框的末尾:

Anstxt.SelStart = Len(Anstxt.Text)

例如

Private Sub Anstxt_Change()
   Anstxt.Text = StrConv(Anstxt.Text, vbProperCase)
   Anstxt.SelStart = Len(Anstxt.Text)
End Sub