簡體   English   中英

獲取要在方法C#WinForms中使用的實際使用的GUI元素(comboBox)的名稱

[英]Get name of actual used GUI Element (comboBox) to use in Method C# WinForms

我有一個方法可以從comboBoxes中刪除特殊項目。 首先,組合框充滿了數據庫中的表名,然后我要刪除列表中不需要的一些表名。 我可以通過同時填充和刪除所有組合框的項目來做到這一點。 但是現在我只希望我實際使用的beeing comboBox在Dropdown上被填充並且項目被刪除。 所以我想我需要獲取實際使用的comboBox的名稱,以將其用作變量或類似的東西。 我該怎么做呢?

到目前為止,這是我的代碼。 您會看到它非常長,僅用於添加和刪除comboBox的項目。

        //Load DB Tables when Drop Down the Dropboxes. And remove not used/needed tables from Combobox.
    private void referenzDropDown(object sender, EventArgs e)
    {
        string myInsertQuery = "SHOW TABLES";
        MySqlCommand myCommand = new MySqlCommand(myInsertQuery, myConnection);
        MySqlDataReader myReader;
        myReader = myCommand.ExecuteReader();
        comboBox18.Items.Clear();
        comboBox19.Items.Clear();
        comboBox20.Items.Clear();
        comboBox21.Items.Clear();
        comboBox22.Items.Clear();
        comboBox23.Items.Clear();
        comboBox24.Items.Clear();
        comboBox25.Items.Clear();
        comboBox26.Items.Clear();
        if (myReader.HasRows == true)
        {
            while (myReader.Read())
            {
                comboBox18.Items.Add((string)myReader[0]);
                comboBox19.Items.Add((string)myReader[0]);
                comboBox20.Items.Add((string)myReader[0]);
                comboBox21.Items.Add((string)myReader[0]);
                comboBox22.Items.Add((string)myReader[0]);
                comboBox23.Items.Add((string)myReader[0]);
                comboBox24.Items.Add((string)myReader[0]);
                comboBox25.Items.Add((string)myReader[0]);
                comboBox26.Items.Add((string)myReader[0]);
            }
            myReader.Close();
        }
        comboBox18.Items.Remove("referenzen");
        comboBox18.Items.Remove("waage1");
        comboBox18.Items.Remove("waage2");
        comboBox18.Items.Remove("waage3");
        comboBox18.Items.Remove("waage4");
        comboBox18.Items.Remove("waage5");
        comboBox18.Items.Remove("waage6");
        comboBox18.Items.Remove("waage7");
        comboBox18.Items.Remove("waage8");

        comboBox19.Items.Remove("referenzen");
        comboBox19.Items.Remove("waage1");
        comboBox19.Items.Remove("waage2");
        comboBox19.Items.Remove("waage3");
        comboBox19.Items.Remove("waage4");
        comboBox19.Items.Remove("waage5");
        comboBox19.Items.Remove("waage6");
        comboBox19.Items.Remove("waage7");
        comboBox19.Items.Remove("waage8");

        comboBox20.Items.Remove("referenzen");
        comboBox20.Items.Remove("waage1");
        comboBox20.Items.Remove("waage2");
        comboBox20.Items.Remove("waage3");
        comboBox20.Items.Remove("waage4");
        comboBox20.Items.Remove("waage5");
        comboBox20.Items.Remove("waage6");
        comboBox20.Items.Remove("waage7");
        comboBox20.Items.Remove("waage8");

        comboBox21.Items.Remove("referenzen");
        comboBox21.Items.Remove("waage1");
        comboBox21.Items.Remove("waage2");
        comboBox21.Items.Remove("waage3");
        comboBox21.Items.Remove("waage4");
        comboBox21.Items.Remove("waage5");
        comboBox21.Items.Remove("waage6");
        comboBox21.Items.Remove("waage7");
        comboBox21.Items.Remove("waage8");

        comboBox22.Items.Remove("referenzen");
        comboBox22.Items.Remove("waage1");
        comboBox22.Items.Remove("waage2");
        comboBox22.Items.Remove("waage3");
        comboBox22.Items.Remove("waage4");
        comboBox22.Items.Remove("waage5");
        comboBox22.Items.Remove("waage6");
        comboBox22.Items.Remove("waage7");
        comboBox22.Items.Remove("waage8");

        comboBox23.Items.Remove("referenzen");
        comboBox23.Items.Remove("waage1");
        comboBox23.Items.Remove("waage2");
        comboBox23.Items.Remove("waage3");
        comboBox23.Items.Remove("waage4");
        comboBox23.Items.Remove("waage5");
        comboBox23.Items.Remove("waage6");
        comboBox23.Items.Remove("waage7");
        comboBox23.Items.Remove("waage8");

        comboBox24.Items.Remove("referenzen");
        comboBox24.Items.Remove("waage1");
        comboBox24.Items.Remove("waage2");
        comboBox24.Items.Remove("waage3");
        comboBox24.Items.Remove("waage4");
        comboBox24.Items.Remove("waage5");
        comboBox24.Items.Remove("waage6");
        comboBox24.Items.Remove("waage7");
        comboBox24.Items.Remove("waage8");

        comboBox25.Items.Remove("referenzen");
        comboBox25.Items.Remove("waage1");
        comboBox25.Items.Remove("waage2");
        comboBox25.Items.Remove("waage3");
        comboBox25.Items.Remove("waage4");
        comboBox25.Items.Remove("waage5");
        comboBox25.Items.Remove("waage6");
        comboBox25.Items.Remove("waage7");
        comboBox25.Items.Remove("waage8");

        comboBox26.Items.Remove("referenzen");
        comboBox26.Items.Remove("waage1");
        comboBox26.Items.Remove("waage2");
        comboBox26.Items.Remove("waage3");
        comboBox26.Items.Remove("waage4");
        comboBox26.Items.Remove("waage5");
        comboBox26.Items.Remove("waage6");
        comboBox26.Items.Remove("waage7");
        comboBox26.Items.Remove("waage8");


    }

我認為應該是(偽代碼):

        //Load DB Tables when Drop Down the Dropboxes. And remove not used/needed tables from Combobox.
    private void referenzDropDown(object sender, EventArgs e)
    {
        string myInsertQuery = "SHOW TABLES";
        MySqlCommand myCommand = new MySqlCommand(myInsertQuery, myConnection);
        MySqlDataReader myReader;
        myReader = myCommand.ExecuteReader();

        ActualSelectedComboBox.Items.Clear();

        if (myReader.HasRows == true)
        {
            while (myReader.Read())
            {
                ActualSelectedComboBox.Items.Add((string)myReader[0]);
            }
            myReader.Close();
        }
        ActualSelectedComboBox.Items.Remove("referenzen");
        ActualSelectedComboBox.Items.Remove("waage1");
        ActualSelectedComboBox.Items.Remove("waage2");
        ActualSelectedComboBox.Items.Remove("waage3");
        ActualSelectedComboBox.Items.Remove("waage4");
        ActualSelectedComboBox.Items.Remove("waage5");
        ActualSelectedComboBox.Items.Remove("waage6");
        ActualSelectedComboBox.Items.Remove("waage7");
        ActualSelectedComboBox.Items.Remove("waage8");
    }

有人可以告訴我如何做到這一點嗎? 謝謝!

事件處理程序的sender參數使用的組合框。 您可以簡單地將其解析為ComboBox

private void referenzDropDown(object sender, EventArgs e)
{
    string myInsertQuery = "SHOW TABLES";
    MySqlCommand myCommand = new MySqlCommand(myInsertQuery, myConnection);
    MySqlDataReader myReader;
    myReader = myCommand.ExecuteReader();

    // the "sender" is the control raising this event
    // parse it to ComboBox
    ComboBox actualSelectedComboBox = (ComboBox)sender;

    actualSelectedComboBox.Items.Clear();
    // ...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM