2013-11-28 27 views
0

我有兩種形式,一種叫做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 ""; 
    } 
+0

.Net成員名稱應該是UpperCamelCase。 – SLaks

+0

@ SLaks也稱爲PascalCase –

+0

表單是* class *。顯然你已經知道如何使用類的成員,使用列表的Items屬性沒有問題。它以*完全相同的方式與表單一起工作。 –

回答

0

表單是普通班。
只要您有一個實例,就可以調用窗體上的任何公共方法。

您可以使您的方法public,然後將第一個窗體的實例傳遞給第二個窗體。

+0

是的,我想到了我剛發佈的問題,但它似乎並沒有工作。我公開了該方法,但在第二種形式中,我稱之爲「displayProduct()」和「Form1.displayProduct()」,但沒有運氣。 –

+0

@EmmetMcLaughlin:你需要一個**實例**,就像任何其他類一樣。 – SLaks

0

您必須制定Form1方法Public。然後你可以從Form1的實例中調用它。

public String displayProducts() 

如果是Admin

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

P.S.如果你認爲在很多地方你需要displayProducts,最好把它分成Utility類。

+0

創建一個新實例不會做他想做的事。 – SLaks

0

有很多方法可以做到這一點。 SLaks和Shiva都是100%正確的。創建Form1的一個實例並調用public 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"); 

和通過使用

Products.DisplayProducts(); 

但是,這是不必要和詳細。我剛剛提到了這個明顯不好的代碼,作爲模型類來存儲要在表單之間共享的數據。

相關問題