C#通过反射获取当前工程中所有窗体并打开的方法
本文实例讲述了C#通过反射获取当前工程中所有窗体并打开的方法。分享给大家供大家参考。具体实现方法如下:
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Linq;
usingSystem.Windows.Forms;
namespaceTestAppHelperMSDNSample
{
staticclassProgram
{
///<summary>
///Themainentrypointfortheapplication.
///</summary>
[STAThread]
staticvoidMain()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Formstartup=newForm();
startup.Text="Chooseaformtorun";
startup.Size=newSystem.Drawing.Size(300,300);
startup.StartPosition=FormStartPosition.CenterScreen;
startup.Load+=newEventHandler(startup_Load);
ComboBoxcboForms=newComboBox();
cboForms.Name="cboForms";
cboForms.DropDownStyle=ComboBoxStyle.DropDownList;
cboForms.Size=newSystem.Drawing.Size(250,20);
cboForms.Location=newSystem.Drawing.Point(25,75);
startup.Controls.Add(cboForms);
ButtonbtnOpenForm=newButton();
btnOpenForm.Text="OpenForm";
btnOpenForm.Size=newSystem.Drawing.Size(100,30);
btnOpenForm.Location=newSystem.Drawing.Point(100,150);
btnOpenForm.Click+=newEventHandler(btnOpenForm_Click);
startup.Controls.Add(btnOpenForm);
Application.Run(startup);
}
staticvoidbtnOpenForm_Click(objectsender,EventArgse)
{
ComboBoxcbo=((senderasButton).ParentasForm).Controls["cboForms"]asComboBox;
Properties.Settings.Default.LastFormFullName=cbo.SelectedItem.ToString();
Properties.Settings.Default.Save();
Formf=Activator.CreateInstance(Type.GetType(cbo.SelectedItem.ToString()))asForm;
f.ShowDialog();
}
staticvoidstartup_Load(objectsender,EventArgse)
{
ComboBoxcbo=((senderasForm).Controls["cboForms"]asComboBox);
//loadalltheFormsinexecutingassembly
Type[]types=System.Reflection.Assembly.GetExecutingAssembly().GetExportedTypes();
foreach(Typetintypes)
{
if(t.BaseType==typeof(Form))
{
cbo.Items.Add(t.FullName);
}
}
//selectthelastused
if(!string.IsNullOrEmpty(Properties.Settings.Default.LastFormFullName))
{
if(cbo.Items.Contains(Properties.Settings.Default.LastFormFullName))
{
intindex=cbo.FindString(Properties.Settings.Default.LastFormFullName);
if(index>=0)
cbo.SelectedIndex=index;
}
}
}
}
}
希望本文所述对大家的C#程序设计有所帮助。
热门推荐
1 训练狗狗憋尿
2 狗狗追踪训练
3 狗狗训练要多少钱
5 深圳狗狗训练
6 训练狗狗唤回
7 狗狗叫怎么训练
8 狗狗训练班
10 狗狗社会化训练
11 狗狗叫回训练
12 广州狗狗训练学校
13 狗狗训练躺下
14 狗狗随行训练
15 训练狗狗巡回
16 狗狗要怎么训练
17 狗狗喂食训练
18 训练狗狗躺下