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
我正在用 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