我使用以下代码在运行时调用和打开一个表单(来自该论坛)。表单的名称取决于用户输入:
// Method
private void ShowForm(string formToCall)
{
Type type = Type.GetType("MyForms." + formToCall);
var form = Activator.CreateInstance(type) as Form;
}
// Call
ShowForm("StationDef");
现在,有些形式采用参数,有些则不采用。我可以向 ShowForm() 方法添加一个默认值为 null 的参数,该方法只会在实际传递参数时更改,但我无法弄清楚如何更改 ShowForm() 代码以在这种情况下接受参数。
这样的东西是行不通的:
private void ShowForm(string formToCall, object arg = null)
{
Type type = Type.GetType("MyForms." + formToCall);
var form = Activator.CreateInstance(type) as Form(arg);
}
任何帮助将不胜感激。
最佳答案
也许可以尝试这样的事情:
private void ShowForm(string formToCall, object[] args)
{
Type type = Type.GetType("MyForms." + formToCall);
var form = Activator.CreateInstance(type, args) as Form;
}
你甚至可以像这样让它变得更“友好”
private void ShowForm(string formToCall, params object[] args)
然后像这样使用它:
ShowForm("MyForm", arg1, arg2);
关于c# - 在运行时将不同的参数传递给未知形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45167478/