Focus() funktioniert nicht

  • VB.NET

Es gibt 20 Antworten in diesem Thema. Der letzte Beitrag () ist von Luigi Lan.

    Focus() funktioniert nicht

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim i, j, h As Integer
    3. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    4. If Not IsNumeric(TextBox1.Text) Then
    5. Label2.Text = "Geben sie bitte in beide Felder eine ZAHL ein!"
    6. focu()
    7. ElseIf Not IsNumeric(TextBox2.text)
    8. Label2.Text = "Geben sie bitte in beide Felder eine ZAHL ein!"
    9. focu()
    10. Else
    11. i = TextBox1.Text
    12. j = TextBox2.Text
    13. h = i Mod j
    14. Label2.Text = "Das Rest vom Ergebnis ist " & h
    15. focu()
    16. End If
    17. End Sub
    18. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
    19. Label2.Text = ""
    20. focu()
    21. AcceptButton = Button1
    22. End Sub
    23. Private Sub focu()
    24. TextBox1.Focus()
    25. End Sub
    26. End Class


    Hallo Liebe User, ich habe eine Frage. Ich bin ein fortgeschrittener Anfänger und möchte ein Programm mit Vb.net programmieren. Die Formansicht ist im Anhang als png-Datei gespeichert. Wenn die Form1 hochfährt soll der Focus auf Textbox1 sein. Das tut er aber nicht. Ich habe es einzeln in die Private Sub's geschrieben und ich habe eine eigene Sub für den Focus gemacht. Aber beides funktioniert nicht. Wieso ist das so. Vielen Dank im Voraus :D
    Bilder
    • Form.PNG

      5,14 kB, 367×137, 88 mal angesehen
    Wenn du Option Strict On schaltest, dann darfst du dich als fortgeschrittenen Anfänger bezeichnen, vorher nicht.
    Regel das, danach helfen wir dir mit deinem Problem.
    »There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais
    Danke, aber Kaiser ist mir lieber.

    Zeig her deinen Code, mit Strict On, vorher hilft dir hier keiner, da es einfach falscher Programmierstil ist nicht strikt zu programmieren.
    Es ist ja nicht so, dass wir dir nicht helfen, wenn du bei strikter Programmierung noch Probleme hast - aber versuchen musst du es.
    »There's no need to "teach" atheism. It's the natural result of education without indoctrination.« — Ricky Gervais
    @Luigi Lan
    Stelle dein Studio überhaupt gleich generell mit den empfohlenen Einstellugen ein...
    Visual Studio - Empfohlene Einstellungen
    und tue den Generalimporz von Microsoft.VisualBasic raus...
    Dann lese folgendes Tut genau für die Alternativen durch...
    Böses aus VB6/VB2003 - und die richtigen VB.NET-Alternativen

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

    Hallo, versuchs mal damit :)

    VB.NET-Quellcode

    1. ​Public Class Form1
    2. Dim i, j, h As Integer
    3. Private _isNumeric As Boolean
    4. Private Property IsNumeric(ByVal p1 As String) As Boolean
    5. Get
    6. Return _isNumeric
    7. End Get
    8. Set(ByVal value As Boolean)
    9. _isNumeric = value
    10. End Set
    11. End Property
    12. Private Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
    13. If Not IsNumeric(TextBox1.Text) Then
    14. Label2.Text = "Geben sie bitte in beide Felder eine ZAHL ein!"
    15. focu()
    16. ElseIf Not IsNumeric(TextBox2.Text) Then
    17. Label2.Text = "Geben sie bitte in beide Felder eine ZAHL ein!"
    18. focu()
    19. Else
    20. i = CInt(TextBox1.Text)
    21. j = CInt(TextBox2.Text)
    22. h = i Mod j
    23. Label2.Text = "Das Rest vom Ergebnis ist " & h
    24. focu()
    25. End If
    26. End Sub
    27. Private Sub Form1_Load(ByVal sender As Object, ByVal e As EventArgs) Handles Me.Load
    28. Label2.Text = ""
    29. focu()
    30. AcceptButton = Button1
    31. End Sub
    32. Private Sub focu()
    33. Me.Show()
    34. TextBox1.Focus()
    35. End Sub
    36. End Class
    Hast du deinen Code schon einmal getestet? (was geschieht in der obigen Property mit p1?)
    Rechnet es auch?
    Den ganzen Zinnober kann man sich sparen, wenn man zu Solchem die richtigen Controls verwendet.
    Bei Zahleneingaben sind NummericUpDown's geradezu prädestiniert...

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

    vb1963 ich verstehe immer noch nicht warum option Strict on . außerdem kommt der focus dann eh nicht auf die textbox1. ich verstehe nix mehr. ich bin gerade total zerstreut. bitte vb1963, erkläre es mir mal bitte ?(. ich schwöre vb-gut's erklärung war die beste. jetzt funktioniert der focus(). aber könntet ihr mir nicht einfach sagen das man bei der private sub focus, me.show einfügen muss. denn jetzt funktioniert es. danke vbgut.

    so sieht der richtige/einfache code aus:

    VB.NET-Quellcode

    1. Public Class Form1
    2. Dim i, h, j As Integer
    3. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    4. If Not IsNumeric(TextBox1.Text) Then
    5. Label2.Text = "Geben sie bitte in beide Felder eine ZAHL ein!"
    6. focu()
    7. ElseIf Not IsNumeric(TextBox2.Text)
    8. Label2.Text = "Geben sie bitte in beide Felder eine ZAHL ein!"
    9. focu()
    10. Else
    11. i = TextBox1.Text
    12. j = TextBox2.Text
    13. h = i Mod j
    14. Label2.Text = "Das Rest vom Ergebnis ist " & h
    15. focu()
    16. End If
    17. End Sub
    18. Private Sub Form1_Load(sender As Object, e As EventArgs) Handles Me.Load
    19. Label2.Text = ""
    20. focu()
    21. AcceptButton = Button1
    22. End Sub
    23. Private Sub focu()
    24. Me.Show()
    25. TextBox1.Focus()
    26. End Sub
    27. End Class


    danke schön für die hilfe und gute nacht!!!
    Option Strict On hat auch nichts mit dem Focus zu tun. Diese Einstellung ist einfach guter Stil beim proggen weil da die Typkonformität verlangt wird. Da kannst du dann nicht mehr Äpfel und Birnen vermischen. Der Compiler macht dich auf jede Typvermischung sofort beim programmieren aufmerksam. Deine Programme werden dadurch auch stabiler und laufsicherer...
    Wie gesagt nehme für dein Vorhaben lieber NUD's für reine Werteingaben. Damit ersparst du dir viel Ärger...
    Der Code von vbgut läuft ja nicht einmal. Egal was du eingibst...

    Luigi Lan schrieb:

    VB.NET-Quellcode

    1. Dim i, h, j As Integer
    Diese Variablen gehören nicht in die Klasse, sondern in die Prozedur.

    Luigi Lan schrieb:

    VB.NET-Quellcode

    1. Private Sub focu()
    Was soll diese Prozedur?
    Schreib am Ende von Button1_Click() genau ein Mal TextBox1.Focus() hin und fertig.
    Me.Show() hat keinen Effekt, da die Form bereits gezeigt wird, sonst könntest Du ja wohl kaum auf den Button drücken.

    Luigi Lan schrieb:

    VB.NET-Quellcode

    1. AcceptButton = Button1
    machst Du im Designer.
    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!
    Der Designer ist das, wo Du deine Form erstellst, di Button drauf ziehst usw. Dort hat jedes Control, auch die Form, Eigenschaften die du setzen kannst. Die sind dann von Anfang an eingestellt. Dort kannst du der Form zum Beispiel den Accept Button mitgeben, oder du könntest die Tab Reihenfolge der Textboxen setzen. 0 wäre dann die, die beim starten ausgewählt ist. Nur ist der Code wirklich nicht optimal. Wenn ich eins hier gelernt habe, dann ist es auf die Profis zu hören und dir direkt den richtigen Stil anzugewöhnen! Textboxen sind halt für Text da und mit Text kann man nicht rechnen, daher besser Numeric UpDown benutzen, damit kannst du erstens nur Zahlen einfeben und ersparst dir jegliche Fehlerbehandlung, und zweitens kannst du damit rechnen... Du kannst dem Numeric auch im Designer einen Value vorgeben, dann wird auf jeden fall gerechnet, auch wenn kein wert eingegeben wurde.
    dein ganzer Code würde sich auf 3 bis 4 Zeilen reduzieren, eventuell noch kürzer...
    "Hier könnte Ihre Werbung stehen..."
    Garnicht, du legst in den Eigenschaften der Form lediglich fest, welcher deiner Buttons der AcceptButton ist... Weist Du was ein AcceptButton ist oder was er tut? Lies Dir bitte mal ein Buch durch und lerne Grundlagen...
    "Hier könnte Ihre Werbung stehen..."