2016-03-14 20 views
0

我是新來的C#和我使用的Windows窗體。 我有Form1datagridviewForm2與一個地圖上。如何在C#中同時將多個單元格的datagridview值從一個表單傳遞到另一個表單?

我想在相同的時間通過的從Form1datagridview單元值未知號碼(數量不受限制),以form2,那是因爲我要顯示的form1所選擇的小區的值(地址)轉換form2在地圖上。 我知道如何使用setters和getters,但在這種情況下,我認爲setter和getters將不起作用,因爲我想傳遞給form2的單元值的數量未知。

任何人都知道如何在同一時間將多個datagridview單元格值從form1傳遞到form2?請幫幫忙,謝謝

這段代碼在Form1中遍歷所有選定行,我想通過 Cells[0].Valueform2

foreach (DataGridViewRow row in DGV.SelectedRows) 
{ 
    // here I have to pass all selected row.Cells[0].Value to form2   
} 
+1

你可以通過他們作爲'列表'?您的問題中沒有足夠的信息來真正幫助您。 – CodingGorilla

+0

@Reza Aghaei。數據來自sql server – Kate

+0

@CodingGorilla。我不知道我是否可以。請詢問我是否缺少任何信息 – Kate

回答

2

做字符串列表,並把它傳遞到下一個形式

List<string> cellvalueList = new List<string>(); 

foreach (DataGridViewRow row in DGV.SelectedRows) 
{ 
    // here I have to pass all selected row.Cells[0].Value to form2 
    cellvalueList.Add(row.Cells[0].Value); 
} 

現在,當你調用一個表格,你需要它接受列表有一個屬性(或者通過構造函數傳遞)。事情是這樣的..

Form2 newForm = new Form(); 
newform.Values = cellvalueList; // this Values is the List<string> property in Form2 
newForm.Show(); 

如果你的窗口2已經是可見的,那麼你可以通過完整的列表

newform.SetValues(cellvalueList); 

這setValues方法是在Form2的函數,該函數的字符串列表作爲參數

1

這裏是我的解決方案:

List<string> values = new List<string>(); 
foreach (DataGridViewRow row in DGV.SelectedRows) 
{ 
    values.Add(row.Cells[0].Value);   
} 
myForm2.SetForm1Values(values); 

有這裏有一些注意事項,第一個是你必須能夠獲得你的另一個表單的實例(在這裏表示爲myForm2)。我在這裏使用了一種名爲SetForm1Values的方法,因爲您表示您不確定某個屬性是否有效,但確實屬性設置器的效果與此方法一樣有效。

1

您可以使用此類代碼獲得選定行的Cells[0]的值:

List<string> selectedData = this.dataGridView1.SelectedRows.Cast<DataGridViewRow>() 
           .Select(row => (string)row.Cells[0].Value) 
           .ToList(); 

這相當於:

List<string> selectedData = new List<string>(); 
foreach (DataGridViewRow row in this.dataGridView1.SelectedRows) 
{ 
    selectedData.Add((string)row.Cells[0].Value); 
} 
相關問題