Har ett litet problem.... Tror att följande borde lösa ditt dilemma !? Detta hjälpte mig fick ändra lite men det löste sig så detta blev resultatet ...få control.focus() att inte markera hela texten i textboxen
Jag har en textbox som tar emot siffror från tryckningar på tangentbord och igenom buttons på samma formulär (en miniräknare). Problemet är när jag har använt en button förlorar ju textboxen sin Focus detta har jag åtgärdat igenom att ge tillbaka den enligt nedan. Default är ju att hela texten i textboxen blir markerad men det är ju inte det jag vill, utan det är ju bara markören som skall placeras sist i boxen så jag kan fylla på med fler siffror....... frågan är ju ”hur göra nu?”......
<code>
Public Sub ControlSetFocus(ByVal control As Control)
' Set focus to the control, if it can receive focus.
If control.CanFocus Then
control.Focus()
End If
End Sub
</code>Sv: få control.focus() att inte markera hela texten i textboxen
<code>
textbox.selectionstart = textbox.textlength
</code>
Kan ev. behöva lägga till ett keysend (pil höger) efter koden ovan !Sv: få control.focus() att inte markera hela texten i textboxen
<code>
Private Sub btn0_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btn0.Click
txtResultat.Text = txtResultat.Text & "0"
Call ControlSetFocus(txtResultat)
txtResultat.SelectionStart = txtResultat.SelectionLength 'här stoppade jag in linjen jag fick, fick
End Sub 'modda lite
Public Sub ControlSetFocus(ByVal control As Control)
' Set focus to the control, if it can receive focus.
If control.CanFocus Then
control.Focus()
End If
End Sub
'kollar tagenttryckningarna släpper endast fram siffror till rutan samt backsteg
Private Sub txtResultat_KeyPress(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles txtResultat.KeyPress
If (Char.IsDigit(e.KeyChar)) Or e.KeyChar = ControlChars.Back Then
e.Handled = False
ElseIf e.KeyChar = Microsoft.VisualBasic.ChrW(42) Or e.KeyChar = Microsoft.VisualBasic.ChrW(43) Or e.KeyChar = Microsoft.VisualBasic.ChrW(45) Or e.KeyChar = Microsoft.VisualBasic.ChrW(47) Or e.KeyChar = Microsoft.VisualBasic.ChrW(61) Then
'här skall en function ta hand om vilken som skall användas
Else
e.Handled = True
End If
End Sub
</code>
När jag trycker på allt annat än siffror eller backspace så släpps de inte fram till textboxen, jag fångar upp +-*/= och skickar till en egen funktion, alla andra knapptryckningar fångas upp och lämnas utan händelse. Man kan skifta i mellan tangentbordet och applikationens knappar och behålla fokus på textboxen.