在同一个项目中使用另一个表单中的方法吗?

时间:2013-11-28 20:21:11

标签: c# winforms methods listbox generic-list

我有两个表单,一个名为Form1,另一个名为Admin。我在Form1中有一个方法来返回项目列表。是否可以以第二种形式调用此方法,Admin?如果是这样,怎么样?

它使用通用列表。

以下是Form1的代码:

private String displayProducts()
    {
        lstProducts.Items.Add("ID\tItem\tCategory\t\tPrice\tStock\n");
        lstProducts_Load();
        for (int i = 0; i < products.Count(); i++)
        {
            lstProducts.Items.Add(products.ElementAt(i).Display() + "\n");
        }

        return "";
    }

3 个答案:

答案 0 :(得分:0)

表格是常规课程 只要您有一个实例,就可以在表单上调用任何公共方法。

您可以制作方法public,然后将第一个表单的实例传递给第二个表单。

答案 1 :(得分:0)

您必须制作Form1方法Public。然后,您可以从Form1

的实例中调用它

public String displayProducts()

然后在Admin 表格

var myForm = new Form1();
var returnValue = myForm.displayProducts();

P.S。如果您认为在许多地方需要displayProducts,最好将其分成Utility类。

答案 2 :(得分:0)

有很多方法可以做到这一点。 SLaks和Shiva都是100%正确的。创建Form1的实例并调用公共displayProducts函数。

这是你问题的答案,但我想我知道你想要实现的目标。

如果您不想这样做,请创建一个简单的模型来将您的产品存储在静态类

public static class Products
{
    public static List<String> lstProducts = new List<String>();

    public static void AddProducts(string product)
    {
        lstProducts.Add(product);
    }

    public static string DisplayProducts()
    {
        //return whatever you want lstproducts
        return "";
    }
}

现在您可以在Form1中使用它来添加像

这样的产品
Products.AddProduct("Product1");

并使用

在Admin中显示产品
Products.DisplayProducts();

但是,这是不必要和精心的。我刚刚提到这个明显不好的代码作为模型类来存储您想要在表单之间共享的数据。