WinForms& Infragistics控制readonly属性不适用于单击控件

时间:2014-04-24 08:56:23

标签: c# winforms infragistics

我编写了这段代码,使所有控件都只读。

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;是按钮事件。 为什么它不适用于点击的? 我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

我想,我找到了答案。问题出在Infragistics控件中。当用户单击UltraTextEditor或UltraComboEditor控件时,Infragistics会将其类型更改为&#34; EmbeddableUIText ...&#34;它的父类型变为UltraTextEditor或UltraComboEditor。所以,我必须检查这些类型或控件&#39;父类型来解决它。