我如何为我的下面的代码创建一个函数,这样我就不必编写下面的整个代码来将一个表单用作MDICHILD表单。
Students stu = null;
private void studentsToolStripMenuItem1_Click(object sender, EventArgs e)
{
if (stu == null || stu.IsDisposed)
{
stu = new Students();
stu.MdiParent = this;
stu.Show();
}
else
{
stu.Activate();
}
}发布于 2012-04-10 18:00:25
尝尝这个
private void CreateMdiChild<T>(ref T t) where T : Form, new()
{
if (t == null || t.IsDisposed)
{
t = new T();
t.MdiParent = this;
t.Show();
}
else
{
if (t.WindowState == FormWindowState.Minimized)
{
t.WindowState = FormWindowState.Normal;
}
else
{
t.Activate();
}
}
}用法:
Students students;
private void studentsToolStripMenuItem1_Click(object sender, EventArgs e)
{
CreateMdiChild<Students>(ref students);
}发布于 2012-03-18 23:10:01
你的代码并没有什么真正的问题。你可以通过一些反思来使它变得干燥:
public Form CreateMdiChild(Type type, bool singleton) {
if (singleton) {
foreach (var child in this.MdiChildren) {
if (child.GetType() == type) {
child.WindowState = FormWindowState.Normal;
child.Show();
child.Activate();
return child;
}
}
}
Form form = (Form)Activator.CreateInstance(type);
form.MdiParent = this;
form.Show();
return form;
}用法:
CreateMdiChild(typeof(Students), true);发布于 2012-03-18 21:36:48
将学生用作单例班级/表单:
public class Students: Form
{
private static Students _Self;
public static Students ShowOrActivate(Form parent)
{
if (_Self == null)
{
_Self = new Students();
_Self.MdiParent = this;
_Self.Show();
}
else
_Self.Activate();
}
}现在使用以下命令显示表单
private void studentsToolStripMenuItem1_Click(object sender, EventArgs e)
{
Students.ShowOrActivate(this);
}https://stackoverflow.com/questions/9758552
复制相似问题