C#的winform中有多个不同种类的控件,要求挨个查看某种控件状态,不能用数组,不能用循环?怎么办?

时间:2022-09-11 14:19:37
如题
在winfrom中有四个不同种类的控件,大概200个左右,要求挨个查看控件状态,比如radiobutton控件的.checked状态和textbox的.text状态。并把这些保存到数据库里
目前保存到数据库这些都还好说,问题挨个查看控件状态。是不能用数组,不能用foreach循环,那么到底该怎么查看状态?把每个控件挨个敲?不应该这么麻烦吧?

7 个解决方案

#1


可以用 while 不?
            var em = Controls.GetEnumerator();
            while (em.MoveNext())
            {
                var c = em.Current;
                //do something with c
            }

#2


还有 c 的类型是 object,你要自己强转 c 的类型才可以读到数据,可以用 is 来判断,反正你的控件类型也只有4种。


另外这跟用 foreach 没有本质区别,foreach 的底层实际上就用 Enumerator 来搞的。

#3


不能循环你除了一个个手打外你还想怎么搞

#4


lz专门说不能用foreach循环,不知道为毛会有这个限制,for和while也是循环,可以用这两个也是没问题的,但是连这两个都不能用那就只能手打了,要不就把循环写到另一个方法里然后调用一下。

#5


不用循环就逐个枚举

是不能用数组,不能用foreach循环
是不知道有 Controls 集合吧

#6


你还可以直接绑定数据源,就不用循环了= = 

#7


谢谢各位,最后决定挨个敲
说这样比较明了,好更改

#1


可以用 while 不?
            var em = Controls.GetEnumerator();
            while (em.MoveNext())
            {
                var c = em.Current;
                //do something with c
            }

#2


还有 c 的类型是 object,你要自己强转 c 的类型才可以读到数据,可以用 is 来判断,反正你的控件类型也只有4种。


另外这跟用 foreach 没有本质区别,foreach 的底层实际上就用 Enumerator 来搞的。

#3


不能循环你除了一个个手打外你还想怎么搞

#4


lz专门说不能用foreach循环,不知道为毛会有这个限制,for和while也是循环,可以用这两个也是没问题的,但是连这两个都不能用那就只能手打了,要不就把循环写到另一个方法里然后调用一下。

#5


不用循环就逐个枚举

是不能用数组,不能用foreach循环
是不知道有 Controls 集合吧

#6


你还可以直接绑定数据源,就不用循环了= = 

#7


谢谢各位,最后决定挨个敲
说这样比较明了,好更改