我必须在Run
中调用方法Class1
。现在我尝试将str
返回到列表框Running
。我知道这段代码Running.Items.Add(str);
不正确,因为它在不同的类中。请告诉我如何解决它?
的Class1.cs
class Class1
{
public void Run()
{
string str = "Hello";
Running.Items.Add(str);
}
}
Form1.cs的
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Running_SelectedIndexChanged(object sender, EventArgs e)
{
}
}
更新如何调用类方法
Form1中
public void Invoke(string typeName, string methodName)
{
Type type = Type.GetType(typeName);
object instance = Activator.CreateInstance(type);
MethodInfo method = type.GetMethod(methodName);
method.Invoke(instance, null);
}
private void Start_Click(object sender, EventArgs e)
{
new Task(() => { Invoke("Worker." + name, "Run"); }).Start();
}
答案 0 :(得分:2)
您没有显示您致电Run()
的方式,因此我假设您是从Form1
开始这样做的。
您需要以某种方式传递引用。让你的班级Class1
依赖于你的表格是一个坏主意。您可以使其依赖于lsitbox,并相应地重命名它:
public class ListBoxAdder()
{
private ListBox _listBox;
public ListBoxAdder(ListBox listBox)
{
_listBox = listBox;
}
public void Run()
{
string str = "Hello";
_listbox.Items.Add(str);
}
}
然后从表单中调用它并将引用传递给Running
ListBox:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
var listBoxAdder = new ListBoxAdder(this.Running);
listBoxAdder.Run();
}
}
答案 1 :(得分:0)
如果您要将str
对象添加到课程Running
中的class1
列表中,您应该只获得对Form1
的活动表单的引用:< / p>
public void Run()
{
string str = "Hello";
((Form1)Form1.ActiveForm).Running.Items.Add(str);
}