首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

通过反射动态SHOW出的窗体 如何传递参数

2013-02-24 
通过反射动态SHOW出的窗体 怎么传递参数通过数据库字段动态加载菜单,点击菜单后通过反射SHOW出窗体,现在的

通过反射动态SHOW出的窗体 怎么传递参数
   通过数据库字段动态加载菜单,点击菜单后通过反射SHOW出窗体,现在的问题是怎么样才能给这些个SHOW的窗口传递参数(string 类型)?
SHOW出窗体的代码如下。

ToolStripMenuItem tsi = sender as ToolStripMenuItem;//得到事件源,强转为菜单项
                    Assembly asb = Assembly.GetExecutingAssembly();//得到当前的程序集
                    Form f = (Form)asb.CreateInstance("Test." + tsi.Tag.ToString());//利用反射,根据数据库中的字段值创建窗体对象
                    foreach (System.Windows.Forms.Form ff in pnc_info.Controls)
                    {
                        //如果子窗体存在,激活子窗体 

                        if (ff.Name == f.Name)
                        {
                            ff.WindowState = System.Windows.Forms.FormWindowState.Minimized;
                            ff.Activate();
                            ff.Size = ff.Parent.Size;
                            ff.WindowState = System.Windows.Forms.FormWindowState.Maximized;
                            return;
                        }
                    }     
                    f.TopLevel = false;                           //设置属性       
                    f.Show();                                 //显示form

[解决办法]
有重载啊

public virtual Object CreateInstance(
    string typeName,
    bool ignoreCase,
    BindingFlags bindingAttr,
    Binder binder,


    Object[] args,
    CultureInfo culture,
    Object[] activationAttributes
)
args
类型: array<System ..::.Object []()>[]
Object 类型的数组,包含要传递给构造函数的参数。 此参数数组在数量、顺序和类型方面必须与要调用的构造函数的参数匹配。如果需要默认的构造函数,则 args 必须是空数组或 nullNothingnullptrnull 引用(在 Visual Basic 中为 Nothing)。


[解决办法]
反射创建对象的时候,是可以传递参数的,重载一下构造函数。
[解决办法]
弹出窗体加自定义的Show方法,比如MyShow(string params);
反射的时候Invoke这个MethodInfo

热点排行