日期:2014-05-19  浏览次数:20746 次

如何遍历所有控件?
如何遍历winform中的所有控件,然后把它门的默认值都设为空?
控件有textbox,combobox,checkbox和datetimepiker,
还有就是如何使datetimepiker的默认值为空或者系统当前日期呢?

------解决方案--------------------
个人认为没有捷径可走,关注学习中
笨办法把所有的控件属性人为修改为默认值。
------解决方案--------------------
不能;
各个控件对应的属性都不一样;
Textbox —— text
Combobox —— checked
Checkbox —— text
Datetimepiker —— value

只有通过自己写代码
------解决方案--------------------
datetimepiker 默认情况就是系统当前的日期。
------解决方案--------------------
datetimepiker 有一个ShowCheckBox选项,如果使其值为空,可以设置Checked为False来表示当前的值是空的。若有值,则设置Checked为True表示datetimepiker 的当前值有效不为空,可以设置datetimepiker 的Value为DateTime.Now来表示当前的时间或日期。
------解决方案--------------------
如何遍历winform中的所有控件,并且获取他的默认值。没有调试。

void EnumWinFormControls(Control P)
{
foreach( Control c in P.Controls)
{
if(c.Controls.Count> 0)
{
EnumWinFormControls(c);
}
Type t=c.GetType();
DefaultPropertyAttribute attr=(DefaultPropertyAttribute)
Attribute.GetCustomAttribute (t,typeof(DefaultPropertyAttribute));
if(attr!=null)
{
string s=attr.Name;
AttributeCollection attributes =
TypeDescriptor.GetProperties(c)[s];
if(attributes!=null)
{
DefaultValueAttribute myAttribute =
(DefaultValueAttribute)attributes[typeof(DefaultValueAttribute)];
Console.WriteLine( "Defalut value {0} ",myAttribute.Value);
}
}
}
}