c# - Visual Studio:从窗体中获取对象数组(列表框,组合框等)并执行'和他们在一起

本文关键字:组合 执行 在一起 他们 列表 Studio Visual 窗体 数组 取对象 获取 | 更新日期: 2023-09-27 18:16:49

那么,这是我的代码(非常简化):

object[] Obj = new object[] {
    ListBoxID,
    CheckBox1
};
string ObjName;
for(int ObjIndex = 0; ObjIndex< Obj.Length; ObjIndex++)
{
    switch (Obj[ObjIndex].GetType().Name)
    {
        #region CheckBox
        case "CheckBox":
            CheckBox ObjType1 = sender as CheckBox;
            ObjName = ObjType1.Name;

代码继续,但它只是停在那里。如果我去掉最后一行,一切都很好,除了我需要名字。

这个函数做了很多事情。它主要是重置几个字段,如文本框,复选框,列表框,组合框,使用它自己的名称来这样做。

我自学c#和Visual Studio本身,所以我不明白为什么这不起作用。我假设这里的"对象"不是用于这种工作的。

使用'checkbox'的例子,它应该这样做:

            if (!ObjType1.Name.Contains(Globals.PreventResetFrom)) {
                if (ObjType1.Name.Contains(FormName) && (Array.IndexOf(Force, ObjName) >= 0 || (Force.Length == 0 && Array.IndexOf(Skip, ObjName) < 0))) {
                    #region Actions Made
                    ObjType1.Checked = false;
                    #endregion
                }
            }
            break;
    }
}

在每种类型的对象之间,唯一改变的是'Actions Made'区域内的内容。其余的都一样。并且,对于相同类型的每个Object,都是相同的东西。

我正在寻找一种方法,而不是有近1000行代码,所有重复相同的东西,我希望能够这样做…

我很高兴,我已经解释得很好了:)请记住,所有的"对象"都是用户看到的实际对象,即用户给予特定输入的对象。这是为了取消用户所做的一切。

感谢您的宝贵时间!

c# - Visual Studio:从窗体中获取对象数组(列表框,组合框等)并执行'和他们在一起

首先:你的问题比需要的长得多,请保持简短和重点(一个最小的例子是我们喜欢在这里)。

除此之外,我认为解决方案可以归结为:

case "CheckBox":
    CheckBox ObjType1 = Obj[ObjIndex] as CheckBox;

您正在循环Obj的元素,因此在该行中使用sender是没有意义的。