Sudoku braucht 81 Textboxen als Sender?

  • C#
  • .NET (FX) 4.5–4.8

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Sudoku braucht 81 Textboxen als Sender?

    Moin,

    ich hab die Idee mich an einem Sudoku zu versuchen. Möchte es gerne mit Windows-Forms erstellen. Dazu würde ich gerne 81 Textboxen verwenden.
    Nun fange ich erstmal ganz easy an, bei jeder Textbox die Eingabe auf Zahlen zwischen 1 und 9 zu begrenzen.

    Was mir dabei auffällt: muss ich dafür wirklich 81 Sender erstellen und diese Syphilis-Arbeit über mich ergehen lassen?

    Oder gibt es einen Weg, dieses zu umgehen?

    Danke und Grüße

    C#-Quellcode

    1. private void textBoxen_Leave(object sender, EventArgs e)
    2. {
    3. if (sender == textBox1)
    4. {
    5. Kästen[0].Ziffer = Convert.ToInt32(textBox1.Text);
    6. if (Kästen[0].Ziffer < 1 | Kästen[0].Ziffer > 9)
    7. {
    8. textBox1.Text = "";
    9. textBox1.Focus();
    10. }
    11. }
    12. if (sender == textBox2)
    13. {
    14. Kästen[1].Ziffer = Convert.ToInt32(textBox2.Text);
    15. if (Kästen[1].Ziffer < 1 | Kästen[1].Ziffer > 9)
    16. {
    17. textBox2.Text = "";
    18. textBox2.Focus();
    19. }
    20. }
    21. if (sender == textBox3)
    22. {
    23. Kästen[2].Ziffer = Convert.ToInt32(textBox3.Text);
    24. if (Kästen[2].Ziffer < 1 | Kästen[2].Ziffer > 9)
    25. {
    26. textBox3.Text = "";
    27. textBox3.Focus();
    28. }
    29. }

    Visual_Prog schrieb:

    Syphilis-Arbeit
    :D Den merk ich mir. Aber bevor Du Dir solche Bakterien oder andere Krankheitserreger bei dem Projekt einfängst, solltest Du überlegen, ob ein anderes Control, ggf. ein DGV da etwas einfacher ist.
    Ansonsten hast Du sehr viel Redundanz im Code. Wenn Du sender korrekt als textbox gecastest an eine Prozedur übergibst, könntest Du viel kürzen. Ist das Problem mit den Kästen. Entweder verpasst Du jeder textbox einen entsprechenden tag-Wert oder Du baust den gesuchten Index aus dem sender-Namen. Letzteres gehört aber in die Kategorie code smell.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @Visual_Prog Mach Dir ein NumericTextBox-Control, das die Eingabe auf die Ziffern 1-9 begrenzt.
    Und pack das ganze in ein 3x3-TableLayoutPanel, wo in jedem Panel ein weiteres 3x3-TableLayoutPanel ist.
    Das dürfte die Darstellung vereinfachen.
    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!