110,537
社区成员
发帖
与我相关
我的任务
分享
public class TTWinForm
{
/// <summary>
/// MDI打开子窗口(只是一个实例)
/// </summary>
/// <param name="MDIForm">父窗口</param>
/// <param name="childType">子窗口类型</param>
/// <returns></returns>
public static Form OpenChildWindow(Form MDIForm, Type childType)
{
Form f = ContainMDIChild(MDIForm, childType);
if (f == null)
{
f = (Form)Activator.CreateInstance(childType);
f.MdiParent = MDIForm;
}
f.Show();
f.Focus();
return f;
}
/// <summary>
/// 查找是否包含子窗口
/// </summary>
/// <param name="MDIForm">父窗口</param>
/// <param name="childType">子窗口类型</param>
/// <returns></returns>
private static Form ContainMDIChild(Form MDIForm, Type childType)
{
foreach (Form f in MDIForm.MdiChildren)
{
if (f.GetType() == childType)
{
f.TopMost = true;
return f;
}
}
return null;
}
public static void InvokeChildMethod(Form f, Type childType, string methodName)
{
MethodInfo methodInfo = childType.GetMethod(methodName, BindingFlags.Public | BindingFlags.Instance | BindingFlags.NonPublic);
methodInfo.Invoke(f, null);
}
}
Type t = typeof(TrainDo);
Form f = TTWinForm.OpenChildWindow(this, t);
TTWinForm.InvokeChildMethod(f, t, "LoadForm");
public class TTWinForm
{
public static void InvokeChildMethod(Type type, string methodName, object instance)
{
MethodInfo methodInfo = type.GetMethod(methodName, BindingFlags.Instance | BindingFlags.Public);
methodInfo.Invoke(instance, null);
}
}
TTWinForm.InvokeChildMethod(typeof(TrainDo), "LoadForm", this);
public class TTWinForm
{
public static void InvokeChildMethod(Type type, string methodName, object instance)
{
object form = Activator.CreateInstance(type);
MethodInfo methodInfo = type.GetMethod(methodName, BindingFlags.Instance | BindingFlags.Public);
methodInfo.Invoke(instance, null);
}
}
TTWinForm.InvokeChildMethod(typeof(TrainDo), "LoadForm", this);