Announcement

Collapse
No announcement yet.

Übergabe verschiedener Listen an eine Funktion

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

  • Übergabe verschiedener Listen an eine Funktion

    Hallo alle zusammen,

    ich habe folgende Funktion und möchte diese gerne erweitern, da ich in C# aber noch blutiger Anfänger bin stehe ich mal wieder voll auf dem Schlauch.

    [highlight=vb.net]
    public void FillThreeBoxesFromList(Attributelist Liste, String Field1, String Field2, String Field3, ComboBox cboData1Box, ComboBox cboData2Box, ComboBox cboIDBox)
    {
    cboData1Box.Items.Clear();
    cboData2Box.Items.Clear();
    cboIDBox.Items.Clear();
    foreach (Attribute Item in Liste.Attributes)
    {
    cboData1Box.Items.Add(Item.Name.ToString());
    cboData2Box.Items.Add(Item.NameT.ToString());
    cboIDBox.Items.Add(Item.ID.ToString());
    }
    if (cboData1Box.Items.Count > 0) cboData1Box.SelectedIndex = 0;
    }
    [/highlight]

    Ich würde gerne auch andere Listen als die Attribute Liste an diese Funktion übergeben können, nur wie muss ich dann den Parameter ändern, im Moment erwarte ich ja eine Attributeliste wie kann ich eine beliebige Liste erwarten?

    Ein weiteres Problem habe ich damit das ich nicht immer die gleichen drei Felder benötige, d.h. ich würde gerne Item.Name ebenfalls dynamisch haben. Einen Feldnamen lasse ich mir schon übergeben, nur wie verwende ich diesen jetzt?

    Gruß Womble

  • #2
    Ähm. Dir ist klar das du DataBinding nachbaust?

    Folgendes einfach 3 mal aufrufen.

    [Highlight=C#]public void FillComboBox(object dataSource, String valueMember, ComboBox comboBox)
    {
    comboBox.DataSource = dataSource;
    comboBox.ValueMember = valueMember;
    comboBox.DisplayMember = valueMember;
    comboBox.SelectedIndex = 0;
    }[/Highlight]

    Comment


    • #3
      Originally posted by Ralf Jansen View Post
      Ähm. Dir ist klar das du DataBinding nachbaust?
      Ganz ehrlich? Nein.

      Aus irgendeinem Grund verbinde ich den Begriff DataBinding immer direkt mit einer Datenbank.

      Dann werde ich mein Programm mal umbauen.

      Danke.

      Womble

      Comment


      • #4
        Guck mal z.B. hier:

        http://www.code-magazine.com/article...uickid=0603011

        Das schaut auf den ersten Blick ganz gut aus. Ansonsten findet man auch auf Google massig zu dem Thema

        Comment


        • #5
          Danke für den Link, ich habe es jetzt nur mal kurz überflogen, aber ich werde mir das auf jeden Fall nochmal genau durchlesen. Denn das alles in meinem Programm zu berücksichtigen wird etwas mehr Zeit in Anspruch nehmen.

          Nur gut das ich noch nicht allzuweit gekommen bin sonst würde ich es vielleicht erst beim nächsten Mal umsetzen

          Gruß Womble

          Comment


          • #6
            Hallo zusammen,

            so ganz funktioniert es noch nicht wie ich es haben will.
            Das DataBinding an sich funktioniert, die drei Boxen werden gefüllt und wenn ich etwas auswähle ändern sich die beiden anderen mit.

            Mein Problem ist jetzt das ich das drei Mal brauche. Ich würde gerne in jedem Set einen anderen Wert wählen können. Dadurch das ich im Moment die gleiche Liste an jedes Set binde ändern sich im Moment alle neun Boxen synchron.

            Gibt es einen besseren Weg die gleiche Liste an jedes Set unabhängig zu binden, ohne die Liste nach der Erstellung zwei Mal zu kopieren?

            Auszug des aktuellen Codes
            [highlight=vb.net]

            Program.Attributelist.loadAttributes();
            LoadAttributesToComboBox(cboAttribute1, cboAttribute1T, cboAttribute1ID);
            LoadAttributesToComboBox(cboAttribute2, cboAttribute2T, cboAttribute2ID);
            LoadAttributesToComboBox(cboAttribute3, cboAttribute3T, cboAttribute3ID);

            ... hier fehlt ein bisschen Code ...

            public void LoadAttributesToComboBox(ComboBox cboData1Box, ComboBox cboData2Box, ComboBox cboIDBox)
            {
            cboIDBox.DataSource = Program.Attributelist.Attributes;
            cboIDBox.ValueMember = "ID";
            cboIDBox.DisplayMember = "ID";
            cboData2Box.DataSource = Program.Attributelist.Attributes;
            cboData2Box.ValueMember = "NAMET";
            cboData2Box.DisplayMember = "NAMET";
            cboData1Box.DataSource = Program.Attributelist.Attributes;
            cboData1Box.ValueMember = "NAME";
            cboData1Box.DisplayMember = "NAME";
            }[/highlight]

            Gruß Womble

            Comment


            • #7
              Für jedes deiner "Sets" eine BindingSource zwischen die Liste und die Controls schalten.

              Comment


              • #8
                Danke.

                Gruß Womble

                Comment

                Working...
                X