如何使用函数传递控件名称以在 C# 中执行相同的代码例程

我想知道如何使用函数传入控件名称(在本例中为组合框)?


我有 8 个组合框,所有这些都服从相同的代码,所以不是将代码复制 8 次并更改被调用组合框名称的名称,而是可以将组合框的名称作为控件传递给函数?


这是我尝试此方法之前的代码:-


private void cmbDataSetA_1_TextChanged(object sender, EventArgs e)

        {

            string filenameExtension = Path.GetExtension(cmbDataSetA_1.Text);


            try

            {   

                // Clear combo before population

                cmbDataSetB_1.Items.Clear();


                // Make sure the data feed replacement media item matches the type of media (JPG/MOV etc)

                if (filenameExtension == ".jpg")

                {

                    for (int i = 0; i < cmbDataSetA_1.Items.Count; i++)

                    {

                        string item = cmbDataSetA_1.GetItemText(cmbDataSetA_1.Items[i]);


                        if (Path.GetExtension(item) == ".jpg")

                        {

                            cmbDataSetB_1.Items.Add(item);

                            cmbDataSetB_1.Refresh();

                        }

                    }                   

                }

                else if (filenameExtension == ".jpeg")

                {


                }

                if (filenameExtension == ".png")

                {


                }

            }

            catch (Exception ex)

            {

                Console.WriteLine("ERROR = " + ex);

            }


        }


..但是,我收到以下错误:-


CS1061“Control”不包含“GetItemText”的定义,并且找不到接受“Control”类型的第一个参数的扩展方法“GetItemText”(您是否缺少 using 指令或程序集引用?)


子衿沉夜
浏览 331回答 1
1回答

紫衣仙女

您已将 ComboA 定义为控件。Control 是 ComboBox 的“通用”基类,没有定义 GetItemText 方法。如果您确定要使用组合框,请将它们声明为 ComboBox:public void PopulateCombo(ComboBox comboA, ComboBox comboB)或者包含一些类型检查代码,例如:if (comboA is ComboBox && comboB is ComboBox){&nbsp; &nbsp; //your code}else{&nbsp; &nbsp; &nbsp;throw new InvalidArgumentException(); //or alternative code for other control types}
打开App,查看更多内容
随时随地看视频慕课网APP