Greetings I have a combobox which filters all the items in the by clearing the panel controls and repopulating it according to the filter, but for whatever reason it loads them improperly and after a couple of filter changes only shows some and not all. It reads it from a litst passing it to another which has all the filtered ones yet it still cant do it.
Any help is greatly appreciated.
The code segment
private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)
{
if (GegStde == null)
return;
foreach (Gegenstand geg in panel1.Controls.OfType<Gegenstand>().Where(x => x.select))
{
geg.Reset();
}
panel1.Controls.Clear();
List<Gegenstand> TempGegStd = new List<Gegenstand>();
if (Filter.SelectedIndex == 0)
TempGegStd = new List<Gegenstand>(GegStde);
else if (Filter.SelectedIndex == 1)
TempGegStd = new List<Gegenstand>(GegStde.Where(x => x.GetDesc.Contains("Spezies")).ToList());
else if (Filter.SelectedIndex == 2)
TempGegStd = new List<Gegenstand>(GegStde.Where(x => !x.GetDesc.Contains("Spezies")).ToList());
foreach (Gegenstand art in TempGegStd)
{
panel1.Controls.Add(art);
if (panel1.Controls.Count > 1)
art.Location = new Point(art.Location.X, panel1.Controls[panel1.Controls.Count - 2].Location.Y + panel1.Controls[panel1.Controls.Count - 2].Height + 5);
}
}
TableLayoutPanel
orFlowLayoutPanel
as a container, rather than trying to calculate theLocation
for each child control. You might replace your existingPanel
or put the TLP or FLP in thatPanel
, depending on which is more appropriate.Location
is and whether that is what you expect.List
where you declare theTempGegStd
but you never use it. You then replace it with differentList
that you populate from yet anotherList
. That part of the code can be cleaned up a lot. You probably don't need to create anyList
at all. What type isGegStde
? I'm guessing that it is alsoList<Gegenstand>
or similar.