Połączenie komponentu CheckedListBox z listą figur

0

Mój problem polega na tym, że nie wiem jak połączyć checkedlistbox z listą figur.
LFG - obiekt listy, czyli po prostu zapisana w pamięci lista figur. A i nie przejmujcie się przedrostkami "bs" w moim kodzie. Wykładowca się uparł, że tak mamy robić i tyle.

Chodzi mi o to, żeby wyświetlały mi tylko te figury geomentryczne, które zaznaczę na checklistboxie. Jak to zrobić?

for (int bs_i = 0; bs_i < bs_n; bs_i++)
            {
                    bs_xp = bs_liczba_losowa.Next(bs_Margines, bs_x_max - bs_Margines);
                    bs_yp = bs_liczba_losowa.Next(bs_Margines, bs_y_max - bs_Margines);
                    bs_Kolor = Color.FromArgb(bs_liczba_losowa.Next(0, 255), bs_liczba_losowa.Next(0, 255), bs_liczba_losowa.Next(0, 255));
                    bs_kolor_linii.BackColor = bs_Kolor;
                    switch (bs_liczba_losowa.Next(1, 6))
                    {
                        case 1:
                            bs_rodzaj_linii = DashStyle.Dash;
                            break;
                        case 2:
                            bs_rodzaj_linii = DashStyle.DashDot;
                            break;
                        case 3:
                            bs_rodzaj_linii = DashStyle.DashDotDot;
                            break;
                        case 4:
                            bs_rodzaj_linii = DashStyle.Dot;
                            break;
                        case 5:
                            bs_rodzaj_linii = DashStyle.Solid;
                            break;
                        default:
                            bs_rodzaj_linii = DashStyle.Solid;
                            break;
                    }
                    bs_grubosc = bs_liczba_losowa.Next(1, 10);
                    bs_wypisz_grubosc.Text = Convert.ToString(bs_grubosc);
                    switch (bs_liczba_losowa.Next(1, bs_liczba_figur + 1))
                    {
                        case 1:
                            bs_LFG.Add(new Tpunkt(bs_xp, bs_yp));
                            bs_LFG[bs_LFG.Count - 1].FormatujFG(bs_Kolor, bs_rodzaj_linii, bs_grubosc);
                            bs_LFG[bs_LFG.Count - 1].wykresl();
                            break;
                        case 2:
                            bs_LFG.Add(new Tpunkt(bs_xp, bs_yp));
                            bs_LFG[bs_LFG.Count - 1].FormatujFG(bs_Kolor, bs_rodzaj_linii, bs_grubosc);
                            bs_LFG[bs_LFG.Count - 1].wykresl_kwadrat();
                            break;
                        case 3:
                            bs_LFG.Add(new Tpunkt(bs_xp,bs_yp));
                            bs_LFG[bs_LFG.Count - 1].FormatujFG(bs_Kolor,bs_rodzaj_linii,bs_grubosc);
                            bs_LFG[bs_LFG.Count - 1].wykresl_pusty_kwadrat();
                            break;
                        default:
                            error1.SetError(start, "nie znana figura");
                            break;
                    } //switch
               // } // if checklistbox
            } //for

 
1

Trochę mi się nudzi to coś wymyśliłem, chyba nie da się lepiej w WF.
Z tego co zrozumiałem to masz jakąś listę figur która jest (lub powinna być) zbindowana z CheckListBo. I chcesz pobrać listę zaznaczonych figur. Robisz to tak:

    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            figures = new List<Figure>
            {
                new Figure(),
                new Figure(),
                new Figure(),
                new Figure(),
                new Figure()
            };

            ((ListBox)this.checkedListBox1).DataSource = figures;
            ((ListBox)this.checkedListBox1).DisplayMember = "Name";
            ((ListBox)this.checkedListBox1).ValueMember = "IsChecked";
        }

        List<Figure> figures;
        private void button1_Click(object sender, EventArgs e)
        {
            var checkedFigures = figures.Where(f => f.IsChecked); // to jest twoja lista zaznaczonych elementów
            foreach (var item in checkedFigures)
            {
                System.Diagnostics.Debug.WriteLine(item.Name);
            }
        }

        private void checkedListBox1_ItemCheck(object sender, ItemCheckEventArgs e)
        {
            (checkedListBox1.Items[e.Index] as Figure).IsChecked = e.NewValue == CheckState.Checked ? true : false;
        }
    }

    class Figure
    {
        static int counter = 0;
        public bool IsChecked { get; set; }
        public string Name { get; private set; }
        public Figure()
        {
            Name = "Figura"+(++counter);
        }
    }

Czemu prowadzący każe wam dodawać bs? Co to w ogóle oznacza?

1 użytkowników online, w tym zalogowanych: 0, gości: 1