为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
子衿沉夜 2021-11-14 15:01:35
我想知道如何使用函数传入控件名称(在本例中为组合框)?我有 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 指令或程序集引用?)
查看完整描述

1 回答

?
紫衣仙女

TA贡献1839条经验 获得超15个赞

您已将 ComboA 定义为控件。Control 是 ComboBox 的“通用”基类,没有定义 GetItemText 方法。如果您确定要使用组合框,请将它们声明为 ComboBox:


public void PopulateCombo(ComboBox comboA, ComboBox comboB)

或者包含一些类型检查代码,例如:


if (comboA is ComboBox && comboB is ComboBox)

{

    //your code

}

else

{

     throw new InvalidArgumentException(); //or alternative code for other control types

}


查看完整回答
反对 回复 2021-11-14
  • 1 回答
  • 0 关注
  • 325 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信