Laden...

Listbox selektiert nicht

Erstellt von T-Man vor 18 Jahren Letzter Beitrag vor 18 Jahren 1.204 Views
T
T-Man Themenstarter:in
210 Beiträge seit 2006
vor 18 Jahren
Listbox selektiert nicht

Hier erstmal der Code mit dem es das Problem gibt:

	public class ListBoxAttributeControl : Panel, IAttributeControl
	{
		private ListBoxAttributeValue attr;
		private Label label = new Label();
		private ListBox listBox = new ListBox();

		public ListBoxAttributeControl (ListBoxAttributeValue attr) : base()
		{
			this.attr = attr;

			label.Text = attr.FieldName;
			label.TextAlign = ContentAlignment.MiddleLeft;
			label.Width = 100;
			label.Dock = DockStyle.Left;

			listBox.SelectionMode = SelectionMode.MultiExtended;
			listBox.BeginUpdate();
			for (int ind=0; ind<attr.Value.Length; ind++)
			{
				listBox.Items.Add(attr.Value[ind].Text);
				listBox.SetSelected(ind,true);
			}
			listBox.EndUpdate();
			listBox.Height = 2*label.PreferredHeight;
			listBox.Dock = DockStyle.Fill;

			this.Controls.Add (listBox);
			this.Controls.Add (label);
			this.Height = (label.PreferredHeight > listBox.Height) ? label.PreferredHeight : listBox.Height;
		}
		//....
	}

Nun das Problem: Wenn ich mein Prog laufen lasse, und ein bestimmtes Event erzeuge, wird der im Code beschriebene Panel erzeugt und angezeigt. Leider sind die Einträge in der Listbox nicht selektiert. Wenn ich in Zeile 24 statt der 2 listBox.SelectedItems.Count benutze, wird selektiert. Das will ich aber eigentlich gar nicht. Weiß einer eine Lösung?

Gruß,
T-Man

830 Beiträge seit 2005
vor 18 Jahren

Hallo T-Man,

keine Ahnung, warum das so ist. Nur eine Vermutung.
Mach die Größenanpassung und das Setzten der DockStyle-Eigenschaft mal vor das Einfügen der Items.

Gruss
Friedel

Ohne Ziel ist auch der Weg egal.

T
T-Man Themenstarter:in
210 Beiträge seit 2006
vor 18 Jahren

Hab schon alles mögliche umgestellt. Hilft alles nichts. Was hilf ist folgende Zeile hinter "listBox.EndUpdate();":

int i = listBox.SelectedItems.Count;

So läuft es zwar, aber schön ist das nicht.

Gruß,
T-Man

4.221 Beiträge seit 2005
vor 18 Jahren

Hast Du mal versucht die ListBox in die Controls Collection aufzunehmen bevor du die Items füllst ?

Vermutlich funzt es nicht weil der Handle der Listbox noch nicht erstellt ist beim füllen.

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

T
T-Man Themenstarter:in
210 Beiträge seit 2006
vor 18 Jahren

Daran liegts leider wohl nicht.
Ich habe das füllen mal ganz ans Ende des Construktors verlegt. Das half nichts. Habe auch mal nur das Selektieren ans Ende gestellt. Das half auch nichts.
Das einzige, was bisher hilft, ist der Zugriff auf listBox.SelectedItems.Count.
Scheint so, als würde erst dadurch die Selektion entgültig gemacht.

Jetzt müßte man mal den Source-Code der Listbox haben...

Gruß,
T-Man

4.221 Beiträge seit 2005
vor 18 Jahren

Ich glaube immer noch dass es am Handle liegen könnte

Mach mal auf deiner ListBox einen Aufruf von CreateControl vor dem Füllen

Früher war ich unentschlossen, heute bin ich mir da nicht mehr so sicher...

T
T-Man Themenstarter:in
210 Beiträge seit 2006
vor 18 Jahren

Das war es. Besten Dank!!! 👍

Ich glaub ich muß mir demnächst mal 'n gutes Buch zum Thema .net Windows Forms holen und lesen. Ein wenig Grundlagenwissen hilft sicher viel. Zur Zeit bastel ich mit Hilfe der Visual-Hilfe... Funktioniert recht gut, aber es wäre doch angenehmer genauer zu wissen, was da eigentlich abläuft. Gibt es da ein besonders gutes Buch, das mir jemand empfehlen kann?

Gruß,
T-Man