2011-06-13 2 views
0

별도의 폼에서 가져온 배열 목록의 값을 다른 폼의 콤보 상자에 추가하고 싶습니다. 나는 이것을 form2에서 시도했다.C# 한 폼에서 다른 폼으로 콤보 상자에 배열 목록 값 추가

foreach (string fname in newname) 
{ 
    form1.comboBox1.Items.Add(fname); 
} 

그러나 값을 콤보 상자로 보내지 않습니다. 지금은 유치원 1

base.AddOwnedForm(form2) 

에이를 추가 할 경우이가 Form1에 당신이 "X"버튼을 클릭하면 종료되지 않습니다 또한 자신을 숨기고하지만 작동 Form2를

Form1 form1=(Form1)this.Owner 

합니다. (이것은 form2의 상속 된 속성 인 것 같습니다).

도움이 될 것입니다.

+1

왜 foreach 루프 내에서 newname [x]에 액세스하고 있습니까? 그저 form1.comboBox1.Items.Add (fname);이 아니어야합니까? – Grizzly

+0

더 많은 코드를 게시하십시오. 특히 Show/ShowDialog. AddOwnedForm으로 변경하면 더 이상 대화 상자가 아닌 것 같습니다. –

+0

미안하지만 origionaly가 form1.comboBox1.Items.Add (fname)로 설정되었습니다. 단지 그걸 가지고 놀고 있었고 태양 아래 모든 것을 시험해 보았습니다. – user770344

답변

1

이것이 필요한지 확실하지 않습니다. 나는 그것이 바란다 :). 나는 C# + winforms을 배우므로 운동으로 질문을 다뤘다.

나는 두 가지 간단한 양식 (모든 컨트롤의 기본 명명)를 만든

Simple forms

첫 번째 양식 코드 :

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     Form2 newForm = new Form2(this); 
     newForm.Show(); 
    } 

    public void UpdateCombo(List<String> newName) 
    { 
     comboBox1.Items.Clear(); 
     foreach (string fname in newName) 
     { 
      comboBox1.Items.Add(fname); 
     } 
     comboBox1.SelectedIndex = 0; 
    } 
} 

두 번째 형태 코드 :

public partial class Form2 : Form 
{ 
    List<String> newName; 
    Form1 parent; 

    public Form2(Form1 parentIn) 
    { 
     parent = parentIn; 
     InitializeComponent(); 
    } 

    void UpdateList() 
    { 
     newName = new List<String>(); 
     for (int i = 1; i <= numericUpDown1.Value; i++) 
     { 
      if (i == 1) 
       newName.Add("1 duck"); 
      else 
       newName.Add(i.ToString() + " ducks"); 
     } 
    } 

    private void numericUpDown1_ValueChanged(object sender, EventArgs e) 
    { 
     UpdateList(); 
     parent.UpdateCombo(newName); 
    } 
} 

나는 희망 코드는 자발적입니다. 질문하지 않아도됩니다. 또한 나보다 경험이 많은 사람이 확인하고 승인하면 더 좋을 것입니다.

+0

굉장하고, 내가 필요로하는 방식으로 완벽하게 작동했습니다! 감사! – user770344

0

부모로부터 자식에게 물건을 보낼 때 매우 쉽습니다. 다른 방향으로 나아가는 동안 값을 "되돌릴"수있는 "이벤트 처리"를 설정하는 것이 좋습니다.

"최고의"튜토리얼이 아닌 것은 확실하지만 대리자를 사용하여 양식간에 정보를 전달하는 "이벤트 처리"에 대해 설명합니다 : http://www.codeproject.com/KB/cs/PassDataWinForms.aspx. 디자이너 장점에서 양식 요소를 두 번 클릭하는 대신에 직접 코드를 작성할 때 이벤트 처리 방식이 어떻게 작동하는지 이해하기 시작하는 것이 좋습니다.

관련 문제