2013-12-11 2 views
1

form1에 여러 개의 열이있는 datagridview가 있고 form2에는 combobox 수가 들어 있습니다. 여기서는 (form1) datagridview 열 헤더 텍스트를 (form2) 콤보 상자 항목으로 추가하는 것을 좋아합니다. datagridview 열 머리글 텍스트를 콤보 상자 항목으로 추가하는 방법, C# ..?

이미 나는 내 요청에 대해 Form2를에

try 
{ 
    Form1 F1 = new Form1(); 

    comboBox1.Items.Add(F1.dataGridView1.Columns[0].HeaderText); 
    comboBox1.Items.Add(F1.dataGridView1.Columns[1].HeaderText); 
    comboBox1.Items.Add(F1.dataGridView1.Columns[2].HeaderText); 
    comboBox1.Items.Add(F1.dataGridView1.Columns[3].HeaderText); 
    comboBox1.Items.Add(F1.dataGridView1.Columns[4].HeaderText); 
    comboBox1.Items.Add(F1.dataGridView1.Columns[5].HeaderText); 
} 
catch{} 

하지만 사용 .. 수있는 사람의 도움이 시도.

답변

1

그래 이것은 내가 실제로 그것을 짓을 대중에게 개인의 DataGridView에의 액세스 한정자를 변경하여 수행하며

public System.Windows.Forms.DataGridView dataGridView1;// at your form1 
를 작동 할 수 있습니다

enter image description here

+0

나는 학급 전체/형태의 액세스 한정자를 변경하는 나쁜 관행 생각합니다. 귀하의 필요에 따라 중계 될 수 있지만 일반적으로 나는 그것을 피하려고 노력할 것입니다. – etaiso

0

(사용하여 캡슐화)를 추가하는 한 가지 방법 당신의 F1 형태로이 기능 :

public string GetDGVHeaderText(int index) 
{ 
    if (index < dataGridView1.ColumnCount) 
    { 
     return dataGridView1.Columns[index].HeaderText; 
    } 
    else 
    { 
     return string.Empty; 
    } 
} 

(나는 유효하지 않은 인덱스가 주어 졌을 때, 당신은 알 수 빈 문자열을 반환합니다 이 ter에게 귀하의 요구에 맞게)

그리고 F2에 생성자를 변경합니다

public F2(F1 f1Ref) 

이제 F2에서 두 번째 양식에 대한 참조를 저장하거나 생성자 본문에 사용할 수 있습니다. 예를 들어

:

public F2(F1 f1Ref) 
{ 
    InitializeComponent(); 

    comboBox1.Items.Add(f1Ref.GetDGVHeaderText(0)); 
    comboBox2.Items.Add(f1Ref.GetDGVHeaderText(1)); 
} 
관련 문제