2013-11-28 1 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

.Имя членов сети должны быть UpperCamelCase. – SLaks

+0

@SLaks Также называется PascalCase –

+0

Форма является * классом *. Очевидно, что вы уже знаете, как использовать членов класса, у вас не возникло проблем с использованием свойства Items в списке. Он работает * точно * таким же образом с формой. –

ответ

0

Формы регулярные занятия.
Вы можете вызвать любой общедоступный метод в форме, если у вас есть экземпляр.

Вы можете сделать свой метод public, а затем передать экземпляр первой формы ко второй форме.

+0

Да, я думал об этом сразу после того, как я разместил вопрос, но он, похоже, не работает. Ive сделал этот метод общедоступным, но во второй форме я называю «displayProduct()» и «Form1.displayProduct()», но не повезло. –

+0

@EmmetMcLaughlin: Вам нужен экземпляр **, как и любой другой класс. – SLaks

0

Вам необходимо сделать свой метод Form1Public. Затем вы можете вызвать его из экземпляра Form1.

т.е.

public String displayProducts() 

Затем в Adminформе

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

P.S. Если вы считаете, что вам понадобится displayProducts во многих местах, лучше разделить его на класс Utility.

+0

Создание нового экземпляра не будет делать то, что он хочет. – SLaks

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(); 

Но это не нужно и сложнее. Я просто упомянул этот явно плохой код как модельный класс для хранения ваших данных, которые вы хотите разделить между вашими Формами.