我编写了这段代码,使所有控件都只读。
makeReadOnly(Control control, bool bIsReadOnly)
{
for(int i=0; i< control.Controls.Count; i++)
{
if(control.Controls[i].Controls.Count > 0)
{
makeReadOnly(control.Controls[i], bIsReadOnly);
}
else if(control.Controls[i].GetType() == typeof(UltraTextEditor))
{
(control.Controls[i] as UltraTextEditor).ReadOnly = bIsReadOnly;
}
else if(control.Controls[i].GetType() == typeof(UltraNumericEditor))
{
(control.Controls[i] as UltraNumericEditor).ReadOnly = bIsReadOnly;
}
else if(control.Controls[i].GetType() == typeof(ListBox))
{
(control.Controls[i] as ListBox).Enable = !bIsReadOnly;
}
}
}
它可以工作但如果用户单击一个控件(如文本框),则单击编辑按钮(调用makeReadOnly函数)。功能不适用于单击的文本框。 (仅适用于其他控件)。
Private void EditButton_Click()
{
foreach(Controls control in this.controls)
{
makeReadOnly(control, false);
}
}
&#34;这&#34;表示父表单。&#34; EditButton_Click()&#34;是按钮事件。 为什么它不适用于点击的? 我该如何解决这个问题?
答案 0 :(得分:0)
我想,我找到了答案。问题出在Infragistics控件中。当用户单击UltraTextEditor或UltraComboEditor控件时,Infragistics会将其类型更改为&#34; EmbeddableUIText ...&#34;它的父类型变为UltraTextEditor或UltraComboEditor。所以,我必须检查这些类型或控件&#39;父类型来解决它。