2013-11-28 4 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 파스칼 케이스라고도합니다 –

+0

양식은 * 클래스 *입니다. 분명히 이미 클래스 멤버를 사용하는 방법을 알았으므로 목록의 Items 속성을 사용해도 아무런 문제가 없습니다. 그것은 양식과 똑같은 * 방식으로 작동합니다. –

답변

0

양식은 정규 수업입니다.
인스턴스가있는 경우 양식의 모든 공용 메서드를 호출 할 수 있습니다.

public 메서드를 만들고 첫 번째 폼의 인스턴스를 두 번째 폼으로 전달할 수 있습니다.

+0

예, 질문을 게시 한 직후 생각했지만 작동하지 않는 것 같습니다. 필자는 메서드를 public으로 만들었지 만 두 번째 형식에서는 "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(); 

을 사용하여 관리자의 제품을 표시하지만 불필요하고 정교합니다. 이 잘못된 코드를 모델 클래스로 언급하여 양식간에 공유하려는 데이터를 저장했습니다.