gpt4 book ai didi

c# - Activator.CreateInstance 将变量传递给表单

转载 作者:行者123 更新时间:2023-11-30 14:24:11 25 4
gpt4 key购买 nike

我想将变量从一种形式传递到另一种形式。

这是 form2 中的构造函数:

public Form2 (int getId,string getText)

在 form1 中我试图像这样传递变量

var obj = (Form)Activator.CreateInstance(Type.GetType("myproject.Form2"),1,"test");
obj.ShowDialog();

我遇到错误:

Additional information: Constructor on type 'myproject.Form2' not found.

如何传递变量?

最佳答案

您应该转换为 Form2,而不是 Form

我不知道问题出在哪里(如果你转换为正确的类型),但如果你有相应的构造函数,你的代码对我来说工作正常。

您可以尝试将参数作为 object[](object 数组)传递 - CreateInstance(Type type, object[] args) ,但您也可以通过传递参数的方式传递参数(因为方法接受 params object[] args)。

尝试替换这一行:

var obj = (Form)Activator.CreateInstance(Type.GetType("myproject.Form2"),1,"test");

通过这个:

var obj = 
(Form2)Activator.CreateInstance(Type.GetType("myproject.Form2"), new object[] {1, "test"});

此外,您可以使用typeof 来获取Type 实例:

var obj = (Form2)Activator.CreateInstance(typeof(Form2), new object[] {1, "test"});

但是如果您知道在编译时要创建哪种类型的实例,您应该使用 new 简单地创建您的对象:

var obj = new Form2(1, "test");

关于c# - Activator.CreateInstance 将变量传递给表单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42190333/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com