簡體   English   中英

我如何使用C#在其他類中使用位於Form1中的組件

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM