2013-12-11 67 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)); 
} 
相關問題