如何将datagridview列标题文本添加为​​组合框项目,C#..?

时间:2013-12-11 09:25:27

标签: c# winforms datagridview combobox

我有一个datagridview,在form1中有多列,而我的form2包含多个组合框。在这里,我想将(form1)datagridview列标题文本添加为​​(form2)组合框项目。

我已经在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{}

但没有用..任何人都可以帮我处理。

2 个答案:

答案 0 :(得分:1)

是的,这可以通过将DataGridView的访问修饰符从Private更改为Public来完成,我已经完成了它并且它可以正常工作

    public System.Windows.Forms.DataGridView dataGridView1;// at your form1

enter image description here

答案 1 :(得分: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));
}