class PrjInit //创建类
{
public static MainForm _MainForm;//主页面
public static ChildPanelUI1 _ChildPanelUI1; //用于存放子页面
public static ChildPanelUI2 _ChildPanelUI2;
public static ChildPanelUI3 _ChildPanelUI3;
public static ChildPanelUI4 _ChildPanelUI4;
public static ChildPanelUI5 _ChildPanelUI5
}
//下面是在初始化中加载
if (PrjInitSet._ChildPanelUI1 == null)
{
PrjInitSet._ChildPanelUI1 = new ChildPanelUI1();//页面显示窗口
panel2.Controls.Add(PrjInitSet._ChildPanelUI1);
PrjInitSet._ChildPanelUI1.Dock = DockStyle.Fill;
}
if (PrjInitSet._ChildPanelUI2 == null)
{
PrjInitSet._ChildPanelUI2 = new ChildPanelUI2();//页面显示窗口
panel2.Controls.Add(PrjInitSet._ChildPanelUI2);
PrjInitSet._ChildPanelUI2.Dock = DockStyle.Fill;
}
.......................................................
以上方面太麻烦,有没有更快捷的方法
使用反射,通过反射获取所有的属性,然后判断输出即可
PrjInit cls_p = new PrjInit(); // 记住这个实例化的对象名
//cls_p.各种操作
//然后开始反射获得属性
Type t = typeof(PrjInit)
PropertyInfo[] pis = t.GetProperties();
for(int i=0;i<pis.Length;i++)
{
PrepertyInfo pi = pis[i];
string name = pi.Name; // 获得属性名称
object val = pi.GetValue(cls_p); // 这里的参数就是你具体实例的对象
}
后来根据CSDN专家指导,这样写可以查到类里面的字段了。但是,还是不懂怎么把 PrjPanelInit._ChildDisplayUI1 = new ChildDisplayUI1();//页面显示窗口 这段,循环成6个子窗体都实例化
private void FormLoadIni()//放到Form1_Load(object sender, EventArgs e)里面执行,初始化加载子窗体
{
//然后开始反射获得属性
FieldInfo[] fieldInfos = typeof(PrjPanelInit).GetFields();//获取PrjPanelInit类中的字段
Console.WriteLine(fieldInfos.Length);
foreach (System.Reflection.FieldInfo item in fieldInfos)
{
string name2 = item.Name; //名称
object value = item.GetValue(fieldInfos); //值
if (value == null)//如果子窗体没有实例化,为空
{
PrjPanelInit._ChildDisplayUI1 = new ChildDisplayUI1();//页面显示窗口
panel1.Controls.Add(PrjPanelInit._ChildDisplayUI1);
PrjPanelInit._ChildDisplayUI1.Dock = DockStyle.Fill;
}
}
}
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632