2013-12-11 39 views
1

我有一个datagridview在form1中有多个列,我的form2包含了多个组合框。在这里,我喜欢将(form1)datagridview列标题文本添加为​​(form2)组合框项目。如何将datagridview列标题文本添加为​​组合框项目,C#..?

已经我想这在窗口2,

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; 
    } 
} 

(请注意,我返回空字符串无效时指数给出,可以人之三本,以满足您的需求)

和更改构造函数F2到:

public F2(F1 f1Ref) 

您现在可以存储到你的第二个窗体的引用在F2或在构造函数体中使用它。

例如:

public F2(F1 f1Ref) 
{ 
    InitializeComponent(); 

    comboBox1.Items.Add(f1Ref.GetDGVHeaderText(0)); 
    comboBox2.Items.Add(f1Ref.GetDGVHeaderText(1)); 
} 
相关问题