2012-09-11 2 views
0

먼저 form1에서 comboBox1의 "Internal"로 수정 자 속성을 설정합니다. 그것은이 작업을 수행하는 가장 좋은 방법comboBox를 form1에서 form2로 복사하는 가장 좋은 방법

form1 f1 = new form1(); 
object[] obj = new object[f1.comboBox1.Items.Count]; 
f1.comboBox.Items.CopyTo(obj, 0); 
comboBox2.Items.AddRange(obj);` 

인가 :

나는 다음과 같은 코드를 사용?

PS : Best way to access a control on another form in Windows Forms?가 작동 :이 만들 수 없습니다.

PPS : 만들기 컨트롤은 공공 내가 좋아하고 어느 쪽도 선호하지 것이 아닙니다이다. 당신이 그 (것)들에 같은 항목이 드롭 다운 목록을 원하는 경우

+1

필자는 항목의 수동 복사본 대신 데이터 바인딩을 사용하여 훨씬 더 많은 유지 관리가 가능한 응용 프로그램을 가지고 있다고 생각합니다. 항목을 공유해야하는 두 개의 콤보 상자가있는 경우이를 동일한 데이터 소스에 바인딩하십시오. DB가 없다면, 어떤 종류의 객체에 대해서도 데이터 바인딩을 사용할 수 있습니다. –

+0

DB가 있습니다 (아직 구현되지 않았으며 지금은 UI에서 작업 중입니다). 그것들을 데이터 소스에 바인딩하는 당신의 아이디어는 좋을 것 같습니다. 나는 그것을 시도 할 것입니다. –

답변

2

당신이 그 항목 어딘가에 일반적인 저장하고 거기에서 두 콤보 상자를 구축하는 것이 훨씬 낫다.

public class Context{ 
    ... 
    ... 
    public List<Foo> FooItems { 
    get{...} 
    } 
} 

public class Form1 { 
    ... 
    combobox.AddRange(this.context.FooItems); 
    ... 
} 

public class Form2 { 
    ... 
    combobox.AddRange(this.context.FooItems); 
    ... 
} 

여전히 다른 형태 사이에 커플 링을 방지하고,이 방법은 목록에 들어갈 값을 도출 한 곳에서만이있다.

+0

공용 클래스를 추가하고 거기에 list1이라는 목록을 만들었습니다. 하지만 내가 액세스하려는 양식에 나타나지 않습니다. 무엇이 잘못되었을 수 있습니까? 이 올바른 접근 방법입니까? –