Textbox mit letzten Focus

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Pinot.

    Textbox mit letzten Focus

    Hallo zusammen,
    ich habe folgendes Problem:
    Auf meiner Form sind recht viele Textboxen, an den Rechner ist eine Waage über eine RS232 Schnittstelle angeschlossen und ich habe einen Knopf, mit dem ich eine Aufforderung an die Waage schicke, die aktuelle Anzeige an die Schnittstelle zu schicken.
    Mein Plan ist es, eine Textbox auszuwählen, dann auf den Knopf zu drücken und die Anzeige wird in die Box geschrieben. Ich hatte gehoft, das ich über Focus zum Ziel komme. Wenn ich aber auf den Knopf drücke, verliert meine TB seinen Focus.
    Gibt es eine Möglichkeit, das Steuerelemt mit letzten Focus zu finden?
    Oder gibt es eine andere Art und Weise so ein Problem zu lösen?
    vielen Dank im Voraus
    Hallo,
    anstatt eines Button würde ich die Funktion auslagern in eine eigene Sub.
    Diese Sub rufst Du dann im entsprechenden Event der Textbox auf, ich würde dazu das TextBox_Enter Event nehmen, das tritt auf wenn Du in die Box rein klickst.
    "Hier könnte Ihre Werbung stehen..."
    @Pinot Wenn Du allen TextBoxen denselben Click-Handler gibst, kannst Du auch den Parameter sender per CType(sender, TextBox) einer Klassenvariablen vom Typ TextBox zuweisen, die kannst Du dann direkt verwenden, um den Text einzutragen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Danke für die Antworten.

    Es handelt sich um 80 Textboxen. Ich wollte mir sparen. von Hand jede einzelne TB mit einem Event zu versehen. Der Charme vom letzten Focus wäre gewesen über eine Schleife das entsprechende Control zu finden.

    Wobei, es müßte doch gehen, den Textboxen über die schleife das event zu zuweisen. Ich werde das probieren

    MenuToolstripitem, das klingt vielversprechend.


    Edit:
    Super ToolStrip, klappt wie ne 1
    Danke noch mal an alle
    (Ich finde das Forum klasse, wie schnell, kompetent und hilfreich die Leute hier sind)

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Pinot“ ()

    Pinot schrieb:

    Es handelt sich um 80 Textboxen
    Das ist schon wieder suboptimal.
    Nach welchen Kriterien wird denn da die aktuelle TextBox selektiert?
    Mit AddHandler kannst Du dynamisch einen Eventhandler zuweisen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Es handelt sich hier um eine Messwertaufnahme bzw Auswertung. Die Form mit den vielen Textboxen spiegeln das alte Papierauftragsformular wieder, auf der handschriftlich Werte notiert worden, die dann später von Hand in eine Datenbank geschrieben werden
    Im Zuge der Messwertaufnahme wird auch ein Gewicht erwartet (genaugenommen 80 Gewichte,max 8 Qualitäten pro Auftrag, 5 Proben pro Qualität, 2 Gewichte pro Probe)
    Die Form habe ich deshalb so aufgebaut, damit der Kollege, der diese Form mit Daten füllt, sich zumindest an vertrauten Positionen orientieren kann.

    Die aktuelle Textbox wird durch Klicken ausgewählt.
    Hallo Pinot,

    ich hoffe Du hast die 80 TextBoxen nicht manuell eingetragen.
    Hier mal ein Beispiel zum automatischen erstellen von TextBoxen oder was auch immer und die Abfrage nach einem click darauf.
    Das Ergebnis könntest Du in einer Variablen speichern und Dein Ergebnis Deiner Waage dann in die Passende TextBox schieben.

    Gruss


    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim txtTextbox(10) As TextBox
    3. Dim Zeile As Integer
    4. Dim Feldbreite As Integer
    5. Dim Höhe As Integer
    6. Dim Feldanzahl As Integer
    7. Dim y As Integer = 20
    8. Private Sub Textboxen()
    9. For Zeile = 1 To 10
    10. txtTextbox(Zeile) = New System.Windows.Forms.TextBox
    11. Me.Controls.Add(txtTextbox(Zeile))
    12. Feldbreite = 30
    13. With txtTextbox(Zeile)
    14. .Location = New System.Drawing.Point(50, y)
    15. .Name = "txtTextbox" & Zeile
    16. .Size = New System.Drawing.Size(Feldbreite, Höhe)
    17. .TabIndex = Zeile.ToString
    18. .Visible = True
    19. .TextAlign = HorizontalAlignment.Left
    20. AddHandler .Click, AddressOf TxtTextbox_Click
    21. End With
    22. Feldanzahl += 1
    23. y += 25
    24. Next
    25. End Sub
    26. Private Sub txtTextbox_Click(ByVal sender As Object, ByVal e As System.EventArgs)
    27. MessageBox.Show("Ich bin das Textfeld: " & CType(sender, TextBox).Name)
    28. End Sub
    29. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    30. Textboxen()
    31. End Sub
    32. End Class

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „guromu“ ()