[英]How can i use component located in form1 in other class using c#
我在form1中創建listview,我需要在其他類中使用它
但是如果我將加載功能添加到form1中,則該功能可以正常工作
表格1:
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);
}
}
}
之所以不起作用,是因為您要創建表單的新實例,將數據設置為該實例,然后再不顯示該表單。 相反,您需要在已經擁有的表單實例上設置數據。
在基於結構的最簡單情況下,現在您將傳遞一個引用:
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);
可以說這不是最佳實踐,盡管這樣的事情總是值得商de的。 通常,您只希望UI對象(在這種情況下為表單)訪問UI元素。 其他類將用於與支持的數據和服務進行交互,並將其返回給UI,但是只有UI可以與其交互並依賴於其自身。
基本上,通過將Windows Forms依賴項引入其他類,該類現在只能由Windows Forms項目使用。 因此,該類應該是Windows Forms項目中的一個幫助器類(如果有的話)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.