2013-11-20 2 views
0

C# - WinForms, .net Framework 4.5, VS 2012클래스간에 데이터를 관리하는 가장 좋은 방법은 무엇입니까?

일부 엔티티로 작은 응용 프로그램을 만들어보십시오. 나는 나의 실체에 대해 별도의 클래스를 생성하고 내부의 간단한 코드를 삽입 :

public class Car 
{ 
    public string Color {get; set;} 
    public string Make { get; set; } 
    public string CarModel { get; set; } 
} 

을 다음 기본 폼에서 내가 어떤 표본을 만들 클래스 Car (새로운 양식을 클릭 한 후, 기본 폼에서 버튼을 클릭하여 geted 수 있습니다 생성 정보가 입력되고 버튼을 클릭하면 3 개의 텍스트 상자가 열립니다 - 새 Car 샘플을 만들어 메인 폼으로 반환해야합니다. 나는 공공 필드 public Car myCar = new Car();을 사용하여 기본 양식에 새로운 형태의 데이터 이동을 위해

public Car myCar = new Car(); 
    private void buttonAdd_Click(object sender, EventArgs e) 
    { 
     myCar.Color = textBoxColor.Text; 
     myCar.Make = textBoxMake.Text; 
     myCar.CarModel = textBoxModel.Text; 
     this.DialogResult = DialogResult.OK; 
     this.Close(); 
     MessageBox.Show("Added"); 
     this.Close(); 
    } 

하지만,이 때문에의 사용으로,이 작업을 수행하는 가장 좋은 방법은 아니다 : 내가 다음 코드를 사용하려고이를 위해

public 필드.

내가 찾은 또 다른 방법

은 - 기본 폼에 다음 방법을

static List<Car> carInStock = null; 
    public static void myCar(string color, string make, string model) 
    { 
     Car myCar = new Car 
     { 
      Color = color, 
      CarModel = model, 
      Make = make 
     }; 
     MainForm.carInStock.Add(myNewCar); 
    } 

을 만들고 버튼과 같은 방법을 사용할 수 있습니다

private void buttonAdd_Click(object sender, EventArgs e) 
    { 
     MainForm.myCar(textBoxColor.Text, 
     textBoxMake.Text, 
     textBoxModel.Text); 
     MessageBox.Show("Added"); 
     this.Close(); 
    } 

을하지만 베리안 또한 최고의 선호 했나 생각하지 않는다.

질문 : 한 가지 형태에서 다른 형태로 (myCar로 표현 Car이 경우 엔티티에) 만든 개체를 이동하는 가장 좋은 방법은 무엇입니까?

+1

"최고"를 정의하십시오. 가장 읽기 쉬운가요? 빨리? 효율적인 메모리? –

+1

아마도 자동차 창고 일 것입니다. 의존성 주입을 찾는다. – Romoku

+0

"최고의"가장 보호 된 방법과 신속한 의미 – gbk

답변

2

GUI 응용 프로그램의 이런 종류의 경우 MVC 또는 MVP 패턴을 따르는 것이 좋습니다. 클래스 자동차는 모델이고, Windows Forms는 뷰이며, 뷰는 모델 인스턴스를 보유하지 않으며 뷰는 컨트롤러 또는 발표자를 통해 업데이트됩니다.

MVC/MVP에 대한 자세한 내용을 참조하십시오. here

+0

을 읽을 필요가 있음 -'패턴 '에 대해 읽지는 않았지만 (매우 썼다), 매우 유용한 것으로 보입니다. – gbk

+2

MVP를 배우십시오. WinForms의 삶이 훨씬 쉬워졌습니다. :) – IAbstract

+0

@Matt - 정말 재미 있고 유용한 링크 – gbk

관련 문제