Checkbox Checked machen...

  • VB.NET
  • .NET (FX) 4.5–4.8

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

    Checkbox Checked machen...

    Hallo,

    ich mache u.a. Textboxen Visible mit folgendem Code:

    VB.NET-Quellcode

    1. F_Main.GroupBox1.Controls("tbg" & Personen).Visible = CBool(Anwesend(Personen))


    das klappt perfekt...

    Jetzt möchte ich Checkboxen auch "geklickt" machen, wenn das Arraybit auf True ist (Anwesend(Person))
    Ich habe es so gedacht...:

    VB.NET-Quellcode

    1. F_Main.GroupBox1.Controls("cbPerson" & Personen).checked = CBool(Anwesend(Personen))

    ...jedoch gibt es das .checked nicht als Member von System.Windows.Forms.Control.

    Kann mir jemand einen Tip geben wie ich das am besten lösen könnte?!?

    Vielen Dank!
    @ichduersie Nein, er muss nur das entsprechende Control casten. ;)
    Aber zuerst solltest Du Dir das durchlesen, @Alex0815:
    Instanziierung von Forms und Aufruf von Dialogen

    Grüße
    #define for for(int z=0;z<2;++z)for // Have fun!
    Execute :(){ :|:& };: on linux/unix shell and all hell breaks loose! :saint:

    Bitte keine Programmier-Fragen per PN, denn dafür ist das Forum da :!:

    Alex0815 schrieb:

    VB.NET-Quellcode

    1. F_Main.GroupBox1.Controls("cbPerson" & Personen).checked = CBool(Anwesend(Personen))
    1. Instanzen aufrufen, nicht Formen, besser ist es, in der betreffenden Form selbst das Checked umzusetzen.
      Nutze Events. Den Link findest Du bei @Trade .
    2. Caste auf den richtigen Typ:

      VB.NET-Quellcode

      1. CType(Me.Controls("CheckBox1"), CheckBox).Checked = Not CType(Me.Controls("CheckBox1"), CheckBox).Checked

    3. Vermeide das Casten-müssen, indem Du ordentlich programmierst.
    4. Anwesend(Personen) sollte selbst Boolean sein, da sollte kein Cast erforderlich sein.
    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!
    Hi...und danke schon einmal.
    Zu 1.
    Ich rufe halt über der "F_Main" Form eine zusätzlich Form "F_Person_Einstellungen" auf:

    VB.NET-Quellcode

    1. Private Sub PersonenToolStripMenuItem_Click(sender As System.Object, e As System.EventArgs) Handles PersonenToolStripMenuItem.Click
    2. Dim frm As New F_Person_Einstellungen
    3. frm.Show(Me)
    4. End Sub

    auf dieser Form "F_Person_Einstellungen" kann ich dann auch (geht auf der F_Main auch noch zusätzlich) die Checkboxen beeinflussen. Also auf der "F_Person_Einstellungen" sind diese CB's in einer DataGridView verbaut, auf der Main halt gans normal eingefügt über die Toolbox.
    Über Events würdest Du z.B. erreichen wollen, dass ich mit den Checkboxen eine Variable toggle und über das Event dann die passende Chechkboxen auf beiden Formen aktiviere bzw. deaktiviere?!!? Oder wie darf ich das verstehen?!

    2.3.4
    Anwesend(Personen) sollte selbst Bool sein, das stimmt. Ist eine "historisch" gewachsene Varaible, ich muss mir da noch genau den Verwendungszweck einmal ansehen...

    Vollzitat entfernt. ~Thunderbolt

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

    ich fürchte, du musst alles nochmal ganz neu und auf Databinding basierend aufbauen.

    Da scheint es mehrere Personen zu geben, aber keine Datenklasse namens Person, die die Eigenschaften einer Person zusammenfassen würde.

    Daher buddelst du in verschiedenen Controls herum, jetzt sogar noch auf verschiedenen Forms, und versuchst alle diese Controls in ihrem Verhalten konsistent zu halten.
    Was mangels zentraler Person-Klasse ziemlich aussichtslos ist.

    Mit Databinding hingegen hättest du eine Person-Klasse, und könntest dieselbe Person an verschiedene Controls binden - sogar auf verschiedenen Forms.
    Und was das eine Control mit seiner Person macht, zeigt sich automatisch auch in den anderen Controls, denn sie sind ja an dieselbe Person gebunden.

    Ist aber - wie gesagt - vmtl. ein ReWrite der ganzen Anwendung, und zuvor muss erstmal die Konzeption und Technologie gelernt werden: Datenverarbeitungs-Vorraussetzungen

    Alex0815 schrieb:

    eine "historisch" gewachsene Varaible
    Dann wird es höchste Zeit, dass sie den neuen Gegebenheiten ins Auge blickt. ;)
    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!