Uzupełnianie comboBox w metodzie

0

W jaki sposób korzystać z comboBox który jest w innej klasie?

Chce uzupełnić mój comboBox wartościami z bazy.
Można to zrobić tak:

        public Form1()
        {
            InitializeComponent();
                string connString = // ścieżka do mojej bazy w Access (mdb);
                OleDbConnection connection = new OleDbConnection(connString);
                connection.Open();
                string query = "SELECT * FROM Wydawnictwa";
                OleDbCommand command = new OleDbCommand(query, connection);
                OleDbDataAdapter AdapterTabela = new OleDbDataAdapter(command);
                DataSet data = new DataSet();
                AdapterTabela.Fill(data, "Wydawnictwa");
                int ileRekordow = data.Tables["Wydawnictwa"].Rows.Count;
                // Chodzi o ten fragment ---------------------------
                comboBoxWydawnictwo.Items.Clear();
                for (int i = 0; i < ileRekordow; i++)
                {
                    string wartosc = data.Tables["Wydawnictwa"].Rows[i]["ID"].ToString();
                    wartosc += " " + data.Tables["Wydawnictwa"].Rows[i]["nazwa"].ToString();
                    comboBoxWydawnictwo.Items.Add(wartosc);
                }
                // Chodzi o ten fragment ---------------------------
                connection.Close();
        }

Jednak chciałbym nie pisać całego kodu bezpośrednio w public Form1() { <kod>}.
Chciałbym umieścić ten kod w metodzie w oddzielnej klasie, ale wtedy nie wiem jak dostać się do obiektu comboBox, ewentualnie go przekazać referencyjnie do metody?

Ps. Nazwa moojego obiektu comboBoxWydawnictwo

0

Już wiem, ale nie usuwam bo może komuś się przyda.

Wywołanie:

public Form1()
        {
        BazaDanych.ZnajdzWydawnictwa(comboBoxWydawnictwa);
        }

Kod w oddzielnej klasie (BazaDanych)

        public static void ZnajdzWydawnictwa(object comboBox)
        {
            //przekazanie referencji do comboBox -------------------------------------
            ComboBox comboBoxWydawnictwa = (ComboBox)comboBox;
            //przekazanie referencji do comboBox -------------------------------------
            OleDbConnection polaczenie = new OleDbConnection(DajSciezkeDoPolaczenia());
            polaczenie.Open();
            string zapytanie = "SELECT * FROM Wydawnictwa";
            OleDbCommand komenda = new OleDbCommand(zapytanie, polaczenie);
            OleDbDataAdapter AdapterTabeli = new OleDbDataAdapter(komenda);
            DataSet dane = new DataSet();
            AdapterTabeli.Fill(dane, "Wydawnictwa");
            int ileRekordow = dane.Tables["Wydawnictwa"].Rows.Count;
            comboBoxWydawnictwa.Items.Clear();
            for (int i = 0; i < ileRekordow; i++)
            {
                string wartosc = dane.Tables["Wydawnictwa"].Rows[i]["ID"].ToString();
                wartosc += " " + dane.Tables["Wydawnictwa"].Rows[i]["nazwa"].ToString();
                comboBoxWydawnictwa.Items.Add(wartosc);
            }
            polaczenie.Close();
        }
1

Ty masz WinFormsy, ja to robiłem w WPF, readerem mniej więcej tak:

cmd.CommandText = "select rodzaj from Magazyn1";
SQLiteDataReader Reader = cmd.ExecuteReader();
while (Reader.Read())
                {
                    rodzajCB.Items.Add(Reader["rodzaj"]);
		}

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