using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace WindowsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
this.IsMdiContainer = true;
MenuStrip ms = new MenuStrip();
ToolStripMenuItem WindowMenu = new ToolStripMenuItem("Window");
ToolStripMenuItem tiantian = new ToolStripMenuItem("(Form2)天天", null, new EventHandler (WindowNewMenu_Click));
ToolStripMenuItem WindowNewMenu = new ToolStripMenuItem("New1", null, new EventHandle(WindowNewMenu_Click));
ToolStripMenuItem WindowNewMenu2 = new ToolStripMenuItem("New2", null, new EventHandler(WindowNewMenu_Click));
ToolStripMenuItem WindowNewMenu3 = new ToolStripMenuItem("New3", null, new EventHandler(WindowNewMenu_Click));
WindowMenu.DropDownItems.Add(WindowNewMenu);
WindowMenu.DropDownItems.Add(WindowNewMenu2);
WindowMenu.DropDownItems.Add(WindowNewMenu3);
WindowNewMenu.DropDownItems.Add(tiantian);
ms.MdiWindowListItem = WindowMenu;
ms.Dock = DockStyle.Top;
ms.Items.Add(WindowMenu);
this.MenuMain = ms;
this.Controls.Add(ms);
}
private void WindowNewMenu_Click(object sender, EventArgs e)
{
string strFormName = ((ToolStripMenuItem)sender).Text.ToString();
//工程名稱加上點號再加要要找開的窗口名稱
string strFileName = "工程名稱."+strFormName.Substring(1, 5).ToString();
Type objType = Type.GetType(strFileName);
object dObj = Activator.CreateInstance(objType);
objType.InvokeMember("ShowDialog", System.Reflection.BindingFlags.InvokeMethod, null, dObj, null);
}
}
}
InvokeMember 說明:
Object InvokeMember (
string name,
BindingFlags invokeAttr,
Binder binder,
Object target,
Object[] args,
CultureInfo culture
)
name
String,它包含要调用的构造函数、方法、属性或字段成员的名称。
- 或 -
空字符串 (""),表示调用默认成员。
- 或 -
对于 IDispatch 成员,一个表示 DispID 的字符串,例如“[DispID=3]”。
invokeAttr
一个位屏蔽,由一个或多个指定搜索执行方式的 BindingFlags 组成。访问可以是 BindingFlags 之一,如 Public、NonPublic、Private、InvokeMethod 和 GetField 等。不需要指定查找类型。如果省略查找类型,则将应用 BindingFlags.Public |BindingFlags.Instance。
binder
一个 Binder 对象,该对象定义一组属性并启用绑定,而绑定可能涉及选择重载方法、强制参数类型和通过反射调用成员。
- 或 -
若为 空引用(在 Visual Basic 中为 Nothing),则使用 DefaultBinder。
target
要在其上调用指定成员的 Object。
args
包含传递给要调用的成员的参数的数组。
culture
表示要使用的全局化区域设置的 CultureInfo 对象,它对区域设置特定的转换可能是必需的,比如将数字 String 转换为 Double。
- 或 -
空引用(在 Visual Basic 中为 Nothing),表示使用当前线程的 CultureInfo。
返回值
表示被调用成员的返回值的 Object。
备注
此方法用于从非托管代码访问托管类,不应从托管代码调用。
Type.InvokeMember 方法使用指定的绑定约束并匹配指定的参数列表和区域性,调用指定的成员。