Hej! Jag gjorde enligt följande i TextChanged. Select på noll tecken i slutet sätter markören på sista positionen. Genom att använda SelectionStart tror jag nog att du kan få markören att hoppa till slutet... Ett stort tack för den konstruktiva hjälpen. Nu fungerar det perfekt.Texten skrivs baklänges!!!
För att se till att namn alltid börjar med stor bokstav och resterande bokstäver är små oboeroende hur användaren matar in namnet använder jag följande kod:
Private Sub txtLastName_TextChanged(...)
txtLastName.Text = txtLastName.Text.Trim
If txtLastName.Text.Length = 1 Then
txtLastName.Text = txtLastName.Text.ToUpper
Else
Dim strHelp As String = txtLastName.Text
txtLastName.Text = strHelp.Substring(0, 1).ToUpper + _
strHelp.Substring(1, strHelp.Length - 1).ToLower
End If
End sub
Problemet är bara att markören ställer sig i början av textboxen efter varje inmatad bokstav och namnet därmed skrivs baklänges. Kan någon ge ett tips hur jag rättar till detta?
/Anders, som blir Sredna i textboxenSv: Texten skrivs baklänges!!!
<code>
If txtLastName.Text.Length = 1 Then
txtLastName.Text = txtLastName.Text.Substring(0, 1).ToUpper
txtLastName.Select(txtLastName.Text.Length, 1)
Else
Dim strHelp As String
txtLastName.Text = txtLastName.Text.Substring(0, 1).ToUpper & _
txtLastName.Text.Substring(1).ToLower
txtLastName.Select(txtLastName.Text.Length, 1)
End If
</code>Sv: Texten skrivs baklänges!!!
Har dock inte testat...
<code>
Private Sub txtLastName_TextChanged(...)
txtLastName.Text = txtLastName.Text.Trim
If txtLastName.Text.Length = 1 Then
txtLastName.Text = txtLastName.Text.ToUpper
Else
Dim strHelp As String = txtLastName.Text
txtLastName.Text = strHelp.Substring(0, 1).ToUpper + _
strHelp.Substring(1, strHelp.Length - 1).ToLower
End If
If Not txtLastName.Text.Length = 0 Then
txtLastName.SelectionStart = txtLastName.Text.Length
txtLastName.SelectionLength = 0
End If
End sub
</code>
Mvh,
Thomas
EDIT:
Du kan även använda en funktion som formar om strängen...
<code>
Private Sub txtLastName_TextChanged(...)
txtLastName.Text = Microsoft.VisualBasic.StrConv(txtLastName.Text, VbStrConv.ProperCase)
If Not txtLastName.Text.Length = 0 Then
txtLastName.SelectionStart = txtLastName.Text.Length
txtLastName.SelectionLength = 0
End If
End sub
</code>
Dock kan det uppstå problem med båda om man vill ändra i mitten på en sträng...
Detta löser även det...
<code>
Private Sub txtLastName_TextChanged(...)
Dim SelStart As Integer = txtLastName.SelectionStart
Dim SelLength As Integer = txtLastName.SelectionLength
txtLastName.Text = Microsoft.VisualBasic.StrConv(txtLastName.Text, VbStrConv.ProperCase)
txtLastName.SelectionStart = SelStart
txtLastName.SelectionLength = SelLength
End sub
</code>
Mvh,
ThomasSv: Texten skrivs baklänges!!!
/Nn