如何将值传递到列表框到另一个类
我必须在Class1
中调用方法Run
。现在我试着将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)
{
}
}
更新如何调用类方法
佛马币
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();
}
你不告诉你如何调用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
列表框:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
var listBoxAdder = new ListBoxAdder(this.Running);
listBoxAdder.Run();
}
}
如果您要添加的str
反对Running
列表中类class1
你应该得到一个参考Form1
的活性形式:
public void Run()
{
string str = "Hello";
((Form1)Form1.ActiveForm).Running.Items.Add(str);
}
通过将'Class1'绑定到'Form1',您可以主动防止代码重用。 – CodeCaster 2015-02-08 11:09:43
感谢您的回复,我收到警告,由于其保护级别,“运行”不可用。我试图改变'私人' - >'公共',但它没有帮助。 – user3650075 2015-02-08 11:13:00
@CodeCaster的确我是,我只是给出了一个快速的问题的答案 – AymenDaoudi 2015-02-08 11:22:38
感谢为答复。现在我将尝试你的代码。我在我的问题中添加了更新,并解释了我如何称为'运行' – user3650075 2015-02-08 11:20:53
不,您不需要为此进行反思。 – CodeCaster 2015-02-08 11:21:29