111,120
社区成员
发帖
与我相关
我的任务
分享 Form2 form2;
private void 窗体1ToolStripMenuItem_Click(object sender, EventArgs e)
{
if (form2 == null || form2.IsDisposed)
{
form2 = new Form2();
form2.MdiParent = this;
form2.Show();
}
else { form2.Activate(); }
}
//toolStrip1的每个item的tag设为要打开的Form。
Hashtable htForms = new Hashtable();
private void toolStrip1_ItemClicked(object sender, ToolStripItemClickedEventArgs e)
{
string FormName=Convert.ToString(e.ClickedItem.Tag);
Type type=Type.GetType(FormName);
object obj = null;
obj=htForms[FormName];
if (obj == null)
{
obj = Activator.CreateInstance(type);
if (obj is Form)
{
htForms.Add(FormName, (Form)obj);
Form frm = (Form)obj;
frm.Show();
}
}
else
{
if (obj is Form)
{
((Form)obj).Activate();
}
}
}
using System;
using System.Collections.Generic;
using System.Text;
using System.Windows.Forms;
namespace Test11
{
static class Class1
{
public static void showForm(Form f)
{
f.Show();
}
}
}
private void button1_Click(object sender, EventArgs e)
{
Class1.showForm(new Form2());
}
#region 子窗体只保留一个实例
/// <summary>
/// 非主窗体打开窗体,不设置子窗体
/// </summary>
/// <param name="ChildTypeString"></param>
public void OpenWindowNoChild(string ChildTypeString)
{
Form myChild = null;
if (!ContainMDIChild(ChildTypeString))
{
// Get current process assembly
Assembly assembly = Assembly.GetExecutingAssembly();
// Create data type using type string
Type typForm = assembly.GetType(ChildTypeString);
// Create object using type's "InvokeMember" method
Object obj = typForm.InvokeMember(
null,
BindingFlags.DeclaredOnly |
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.CreateInstance,
null,
null,
null);
// Show child form
if (obj != null)
{
myChild = obj as Form;
myChild.MdiParent = this;
myChild.Show();
myChild.Focus();
}
}
}
/// <summary>
/// Open child window
/// </summary>
/// <param name="ChildTypeString"></param>
public void OpenWindow(string ChildTypeString)
{
Form myChild = null;
if (!ContainMDIChild(ChildTypeString))
{
// Get current process assembly
Assembly assembly = Assembly.GetExecutingAssembly();
// Create data type using type string
Type typForm = assembly.GetType(ChildTypeString);
// Create object using type's "InvokeMember" method
Object obj = typForm.InvokeMember(
null,
BindingFlags.DeclaredOnly |
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.CreateInstance,
null,
null,
null);
// Show child form
if (obj != null)
{
myChild = obj as Form;
myChild.MdiParent = this;
myChild.WindowState = FormWindowState.Maximized;
myChild.Show();
myChild.Focus();
}
}
}
/// <summary>
/// Search mdi child form by specific type string
/// </summary>
/// <param name="ChildTypeString"></param>
/// <returns></returns>
public bool ContainMDIChild(string ChildTypeString)
{
Form myMDIChild = null;
foreach (Form f in this.MdiChildren)
{
if (f.GetType().ToString() == ChildTypeString)
{
// found it
myMDIChild = f;
break;
}
}
// Show the exist form
if (myMDIChild != null)
{
myMDIChild.WindowState = FormWindowState.Maximized;
myMDIChild.TopMost = true;
myMDIChild.Show();
myMDIChild.Focus();
return true;
}
else
return false;
}
#endregion