所有打开的窗体都存在于Application.OpenForms集合,遍历获取或者判断
解决方案 »
- 求一个关于关系图绘制的方法及算法【100分奉上】
- 关于WCF和WPF
- 为什么单击“生成解决方案”会删除资源文件
- 经常见到,又经常使用,但是还是迷糊的--this
- winform中Listview数据导入导出
- 递归读取C盘下所有文件,提示指定的路径或文件名太长
- 欢迎Baidu和Google工作的兄弟们进去指点指点,我这种方法是否能够用于大型搜索?
- 这个取html的正则表达式 一半天通不过东南大学接口技术与应用课程视频31-40</a>\s*<img id=\"\s*/>\s*
- 爱好C#的程序员朋友,欢迎加入C#.NET交流群
- 请C#大虾们指点
- 怎么把C++里的函数封装成C#的静态方法啊?
- 将一个winform窗体嵌入到另一个窗体中,怎么改变背景色为透明色
public void openForm<TForm>(ref TForm form) where TForm : Form, new()
{
if (form != null)
{
form.Activate();
}
else
{
form = new TForm();
form.Show();
}
}使用:private form_a FrmA;//定义类型为form_a的变量FrmA,form_a类应当继承Form类并有公共无参构造函数
private Form FrmB;
openForms(ref FrmA);//直接调用,编译器会推断出泛型参数。
openForms<form_a>(ref FrmB);//如果变量是Form类型,需要显式指定泛型参数(否则将得到一个基类对象)
/// <summary>
/// 打开MDI子窗口并附加到MDI主窗口中,如果MDI主窗口中已经存在相同类型的子窗口,则直接激活
/// </summary>
/// <typeparam name="T">MDI子窗体类型</typeparam>
/// <param name="mdiParent">MDI主窗体引用</param>
/// <returns>当前创建或得到的MDI子窗体类型实例的引用</returns>
private T OpenUniqueMDIChildWindow<T>(Form mdiParent) where T : Form, new()
{
foreach (Form subForm in mdiParent.MdiChildren)
{
if (subForm.GetType().Equals(typeof(T)))
{
subForm.Activate();
return subForm as T;
}
}
T newForm = new T();
newForm.MdiParent = mdiParent;
newForm.Show();
return newForm;
}
通过 OpenUniqueMDIChildWindow(FrmA);
两个提示,1、提示FrmA是“类型”,但此处被当做“变量”来使用
2、错误 2 无法从用法中推理出方法“Test1.MDIForms.OpenUniqueMDIChildWindow<T>(System.Windows.Forms.Form)”的类型参数。请尝试显式指定类型参数。 我想这两个原理应该是一样的,但菜鸟新手不懂啊求指导
OpenUniqueMDIChildWindow<FrmA>(this);
{
var form = (Application.OpenForms.FirstOrDefaul(f=>f.GetType() == formType); if (form != null)
{
form.Activate();
}
else
{
form =(Form)Activator.CreateInstance(formType, ps);
form.MdiParent =this;
form.Show();
}
}
//
用窗体类型作为参数。调用则是: openForm( typeof(FrmA), 参数1, 参数2,...);