我在form1中创建listview,我需要在其他类
中使用它但如果我向form1添加加载函数,该函数可以正常工作
Form1中:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Command_Procesures.LoadAll();
}
Command_Procesures:
public class Command_Procesures
{
public static void LoadAll()
{
List<database> users = database.GetUsers();
Form1 ff = new Form1();
ff.listView1.Items.Clear();
foreach (database u in users)
{
ListViewItem item = new ListViewItem(new String[] { u.Id.ToString(), u.Username, u.Password });
item.Tag = u;
ff.listView1.Items.Add(item);
}
}
}
答案 0 :(得分:0)
这不起作用的原因是因为您正在创建表单的 new 实例,将数据设置为那个实例,然后从不显示该表单。相反,您需要在已有的表单实例上设置数据。
在最简单的情况下,基于您现在拥有的结构,您将传递对它的引用:
public static void LoadAll(ListView listView)
{
List<database> users = database.GetUsers();
listView.Items.Clear();
foreach (database u in users)
{
ListViewItem item = new ListViewItem(new String[] { u.Id.ToString(), u.Username, u.Password });
item.Tag = u;
listView.Items.Add(item);
}
}
然后在调用方法时提供该引用:
Command_Procesures.LoadAll(this.listView1);
可以被认为这不是最好的做法,尽管这些事情总是值得商榷的。通常,您只需要UI对象(在本例中为表单)来访问UI元素。其他类将用于与支持数据和服务交互并将其返回到UI,但只有UI应该与自身交互并依赖于自身。
基本上,通过向您的其他类引入Windows窗体依赖项,该类现在只能由 用于Windows窗体项目。因此,该类应该只是Windows窗体项目中的辅助类,如果是一个单独的类。