我有一个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{}
但没有用..任何人都可以帮我处理。
答案 0 :(得分:1)
是的,这可以通过将DataGridView的访问修饰符从Private更改为Public来完成,我已经完成了它并且它可以正常工作
public System.Windows.Forms.DataGridView dataGridView1;// at your form1
答案 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));
}