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行代码,所有重复相同的东西,我希望能够这样做…
我很高兴,我已经解释得很好了:)请记住,所有的"对象"都是用户看到的实际对象,即用户给予特定输入的对象。这是为了取消用户所做的一切。
感谢您的宝贵时间!首先:你的问题比需要的长得多,请保持简短和重点(一个最小的例子是我们喜欢在这里)。
除此之外,我认为解决方案可以归结为:
case "CheckBox":
CheckBox ObjType1 = Obj[ObjIndex] as CheckBox;
您正在循环Obj
的元素,因此在该行中使用sender
是没有意义的。