0

我在某处的堆栈溢出中找到了这些指令……我只添加了最后一个循环来查找我感兴趣的唯一对象,即文本框和下拉列表……对于找到的对象,我需要将 ReadOnly 属性从 true 更改为 false 或反之反之亦然...我无法确定如何定义受影响对象的对象名称...

在此先感谢您的帮助。

        foreach (Control ctlMaster in Page.Controls)
        {
            if (ctlMaster is MasterPage)
            {
                foreach (Control ctlForm in ctlMaster.Controls)
                {
                    if (ctlForm is HtmlForm)
                    {
                        foreach (Control ctlContent in ctlForm.Controls)
                        {
                            if (ctlContent is ContentPlaceHolder)
                            {
                                foreach (Control ctlChild in ctlContent.Controls)
                                {
                                    if (ctlChild is Panel)
                                    {
                                        foreach (Control ctlform in ctlChild.Controls)
                                        {
                                            if (!string.IsNullOrEmpty(ctlform.ID))
                                            {
                                                Debug.WriteLine("ID = [" + ctlform.ID + "]");
                                                Debug.WriteLine("UniqueID = [" + ctlform.UniqueID + "]");
                                                Debug.WriteLine("type = [" + ctlform.GetType() + "]");
                                                if(ctlform.GetType().ToString().IndexOf("TextBox") != 0
                                                || ctlform.GetType().ToString().IndexOf("DropDownList") != 0)
                                                {
                                                    // **??? objectName.ReadOnly = true; ???**
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
4

1 回答 1

0

is可以在创建您检查的类型的变量的类型名称之后接受附加参数:

if(ctlform is TextBox t)
  t.ReadOnly = ...

如果您使用的是没有它的旧版 c#,您可以使用as或执行强制转换:

if(ctlform is TextBox)
  (ctlform as TextBox).ReadOnly = ...

if(ctlform is TextBox)
  ((TextBox)ctlform).ReadOnly = ...

DropDownList 没有 ReadOnly 属性;也许您必须使用已启用?

于 2021-10-18T06:08:09.650 回答