Announcement

Collapse
No announcement yet.

Variable Nummer von Eigenschaftstext bei chechBox

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Variable Nummer von Eigenschaftstext bei chechBox

    Guten Abend,

    ich hätte da eine Frage bezüglich der checkBox und gleichzeitig für viele andere Tools wie Labels, textBox uvm.

    Ich habe eine Schleife in der überprüft wird ob jede chechBox "Checked" ist oder eben nicht. Ist eine aktiviert so soll der Text der chechBox ausgeben werden.

    Da meine Checkboxen alle ganz einfach "checkBox1, checkBox2,..." heißen, dacht ich mir das ich einfach die Zahl ändere bei jedem Durchlauf.

    Code:
    int i = 0;
                for (i=0; i < 5; i++)
                {
                    if(checkBox1.Checked == true)
                    {
                        Array.Resize(ref ar1, ar1.Length + 1);
                        Array.Copy(new object[] { checkBox1.Text }, 0, ar1, ar1.Length - 1, 1);
                        MessageBox.Show(ar1[i]);
                    }
                 }
    Nur soll jetzt die "1" bei chechBox durch eine Variable ersetzt werden, also
    Code:
    chechBox + i + .Checked
    Das geht natürlich nicht, gibt es da eine Lösung für oder muss ich da anders vorgehen und eine alternative finden?


    Einen schönen Sonntagsabend Euch noch

  • #2
    Hallo,

    schau dir mal [FAQ] Variablennamen zur Laufzeit zusammensetzen an und die dortigen Überlegungen dazu.


    mfG Gü
    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

    Comment


    • #3
      Probiere mal das:
      Code:
      // das da einbinden:
      using System.Reflection;
      using System.Security;
      
      ...
      for (i=0; i < 5; i++)
      {
          string s = "checkBox" + i.ToString();
          CheckBox cb = this.GetType().GetField(s, BindingFlags.Instance | BindingFlags.NonPublic).GetValue(this) as CheckBox;
          if(cb.Checked)
          ...

      bye,
      Helmut

      Comment


      • #4
        Alternativ auch:

        [highlight=c#]
        var selectedCheckboxes = from Control c in Controls
        where c is CheckBox && c.Name.StartsWith("checkBox") && ((CheckBox)c).Checked
        select c;
        [/highlight]

        Vorteile:

        Ich muss die Schleife nicht anpassen wenn ich noch eine CheckBox hinzufüge

        Comment


        • #5
          Hallo,

          [highlight=c#]
          where c is CheckBox
          [/highlight]
          kann anders mit
          [highlight=c#]
          in Controls.OfType<CheckBox>()
          [/highlight]
          geschrieben werden.


          mfG Gü
          "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

          Comment


          • #6
            Bin mir grad gar nicht mehr sicher ob in Controls alle Controls drin sind oder ob man das rekursiv durchlaufen muss.

            Comment


            • #7
              das letztere

              Comment


              • #8
                Hm na dann kommts drauf an wie die Form aussieht oder man baut sich nen rekursiven Ansatz. Hat die obere Lösung dasselbe Problem?

                Ich würds allerdings so herum auch nicht angehen, weil die Programmlogik in der Oberfläche steckt

                Comment


                • #9
                  Originally posted by hwoess View Post
                  Probiere mal das:
                  Code:
                  // das da einbinden:
                  using System.Reflection;
                  using System.Security;
                  
                  ...
                  for (i=0; i < 5; i++)
                  {
                      string s = "checkBox" + i.ToString();
                      CheckBox cb = this.GetType().GetField(s, BindingFlags.Instance | BindingFlags.NonPublic).GetValue(this) as CheckBox;
                      if(cb.Checked)
                      ...

                  bye,
                  Helmut

                  Vielen Dank an alle und ganz besonders Helmut, Dein Code klappt einwandfrei


                  Vielen Dank und MfG
                  Flo

                  Comment

                  Working...
                  X