【问题标题】:How to add datagridview column header text as combobox items, C#..?如何将datagridview列标题文本添加为​​组合框项目,C#..?
【发布时间】:2013-12-29 04:41:31
【问题描述】:

我在 form1 中有一个包含多个列的 datagridview,而我的 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{}

但没用..任何人都可以就我的请求提供帮助。

【问题讨论】:

    标签: c# winforms datagridview combobox


    【解决方案1】:

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

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

    【讨论】:

    • 我认为更改整个类/表单访问修饰符是一种不好的做法。它可能会满足您的需求,但通常我会尽量避免这种情况。
    【解决方案2】:

    一种方法(使用封装)是将此函数添加到您的F1form:

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

    【讨论】:

      猜你喜欢
      • 2017-11-01
      • 1970-01-01
      • 2017-05-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-11
      相关资源
      最近更新 更多