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
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.
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
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...
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
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...
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