Autor Beitrag
Blacknitram
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Mi 28.04.10 15:14 
hi
Ich habe ein Problem Ich starte Form mit:

ausblenden C#-Quelltext
1:
2:
3:
System.Windows.Forms.Application.EnableVisualStyles();
System.Windows.Forms.Application.SetCompatibleTextRenderingDefault(false);
System.Windows.Forms.Application.Run(new Form2(NameToForm));


NameToForm ist eine List mit mehreren Namen.
Und dann in Forms habe ich eine CheckedListBox in der die Namen ausgewählt werden können
Aber im wenn ich es durch laufen lasse werden im Forms keine CheckBoxen erzeugt und das Button Click funktioniert auch nicht

ausblenden volle Höhe C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
public partial class Form2 : Form
 {
  List<String> ergebnis = new List<string>();
  public Form2(List<String> NameAusBib)
   {
     ergebnis = null;
     InitializeComponent();
     checkListBox = new CheckedListBox();
     checkListBox.Location = new Point(1028);
     checkListBox.Size = new Size(271180);
     checkListBox.Text = "Namen";
     foreach (String Name in NameAusBib)
      {
        checkListBox.Items.Add(Text = Name);
      }
   }
   private void buttonOK_Click(object sender, EventArgs e)
    {
     if (checkListBox.SelectedItem.ToString() != null)
     {
       ergebnis.Add(checkListBox.SelectedItem.ToString());
     }
     else
     {
       MessageBox.Show("Wählen Sie minderstens einen Namen aus.""Kein Namen Ausgewählt", MessageBoxButtons.OK, 
            MessageBoxIcon.Exclamation);
     }
     this.Close();
     }
     CheckedListBox checkListBox;
}

Ich hoffe das mir einer helfen kann.

lg
Martin
JüTho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 2021
Erhaltene Danke: 6

Win XP Prof
C# 2.0 (#D für NET 2.0, dazu Firebird); früher Delphi 5 und Delphi 2005 Pro
BeitragVerfasst: Mi 28.04.10 18:06 
Hallo,

du machst auf jeden Fall einen gravierenden Fehler: Beim Erstellen der Klasse wird der Variablen ergebnis zuerst eine neue Liste zugewiesen, dann kommt der Konstruktor und setzt die Variable ergebnis auf null. Was soll das?

Mit der CheckedListBox habe ich mich noch nicht befasst. Sollte es nicht auch so gehen:
ausblenden C#-Quelltext
1:
checkListBox.Items.AddRange(NameAusBib);					

ToString() mit null zu vergleichen kommt mir auch komisch vor. Kann die checkListBox nicht mehrere Items auswählen? Ein String wird ggf. mit IsNullOrEmpty verglichen.

Gruß Jürgen
Kha
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 3803
Erhaltene Danke: 176

Arch Linux
Python, C, C++ (vim)
BeitragVerfasst: Mi 28.04.10 20:53 
Außerdem muss die CheckedListBox noch this.Controls hinzugefügt werden. Aber warum sie überhaupt im Code und nicht im Designer erstellen?

_________________
>λ=
Blacknitram Threadstarter
Hält's aus hier
Beiträge: 12



BeitragVerfasst: Fr 30.04.10 11:01 
danke es funktioniert jetzt.
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
public partial class Form2 : Form
{
    List<String> NameToBib = new List<String>();
    public Form2(List<String> NameAusBib)
    {
        InitializeComponent();
        int i = NameAusBib.Count;
        this.checkedListBox1.Items.AddRange(new object[] { NameAusBib[0] });
        for (int alle = 1; i > alle; alle++)
        {
           this.checkedListBox1.Items.Add(NameAusBib[alle]);
        }

    }
    private void buttonOK_Click(object sender, EventArgs e)
    {
        foreach (object itemChecked in checkedListBox1.CheckedItems)
        {
           NameToBib.Add(itemChecked.ToString());
        }
        MessageBox.Show("\nErgebnis inhalt wie Viel: " + NameToBib.Count);
        this.Close();
    }
}

aber ich weis nicht wie ich die List NameToBib mit den abgespeicherten Werten, die ausgewählt wurden, wieder in die Klassenbibliothek zurück bekomme aus der ich Form2 gestartet habe.

lg
Martin
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Fr 30.04.10 11:31 
Hallo,

um die Werte aus dem Form zu bekommen musst du eine Schnittstelle definieren. Das kann eine öffentlichen Methode oder eine Eigenschaft sein.

Ich würde in deinem Fall ein Property nehmen (wie bei der CheckListBox selbst). Darüber könntest du auch dann die Initialisierung machen:
ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
class Form2 : Form
{
   public IEnumerable<string> Items { 
      set { 
         this.checkedListBox1.Items.Clear();
         this.checkedListBox1.Items.AddRange(value.ToArray());
      }
      get { this.checkedListBox1.Items.Cast<string>(); }
   }
   public List<string> CheckedItems
   {
      set { 
        for (int i = 0; i < cbl.Items.Count; i++)
        {
           this.checkedListBox1.SetItemChecked(i, value != null && value.Contains<string>(item));
        }
      }
      get { this.checkedListBox1.CheckedItems.Cast<string>(); }
   }
   public Form2(List<string> items)
   {
      Items = items;
   }
}


Gruß
danielf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1012
Erhaltene Danke: 24

Windows XP
C#, Visual Studio
BeitragVerfasst: Fr 30.04.10 15:32 
Hmm.. der Code war ziemlich unsauber, deshalb nochmal den Code für das CheckedItems Property:

ausblenden C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
        public IEnumerable<string> CheckedItems
        {
            set
            {
                for (int i = 0; i < this.cbl.Items.Count; i++)
                {
                    this.cbl.SetItemChecked(i, value != null && value.Contains<string>((string) cbl.Items[i]));
                }
            }
            get { return this.cbl.CheckedItems.Cast<string>(); }
        }