2017-05-24 64 views
1

在此代碼中,我創建了幾個DataGridViews。這些數量取決於每次啓動應用程序時文件的不同,因此DataGridView的數量也是不同的。以另一種方法創建的訪問對象C#

如何訪問特定的dataGridView grid[i]並修改它在該方法中被調用的事件Form1_UserAddedRow

代碼:

public void Form1_Load(object sender, EventArgs e) 
{ 
    string[] lines = System.IO.File.ReadAllLines(@"..\..\Base.txt"); 

    int diet_num = 0; 
    int grid_num = 0; 

    foreach (string x in lines) diet_num++; 

    grid_num = (diet_num/Constant.DATAGRID_DIETS_IN_GRID) + 1; 

    DataGridView[] grid = new DataGridView[grid_num]; 
    for (int i = 0; i < grid_num; i++) 
    { 
     grid[i] = new DataGridView(); 
     grid[i].Tag = i; 
     grid[i].Parent = this; 
     grid[i].Location = new Point(12, 12 + (8 + Constant.DATAGRID_ROW_HEIGHT * 2) * i); 
     grid[i].Visible = true; 
     grid[i].RowHeadersVisible = false; 
     grid[i].Height = Constant.DATAGRID_ROW_HEIGHT * 2; 
     grid[i].Width = Constant.DATAGRID_COLUMN_SIZE * Constant.DATAGRID_DIETS_IN_GRID + 3; 
     grid[i].UserAddedRow += Form1_UserAddedRow; 
    } 
    this.Width = Constant.DATAGRID_COLUMN_SIZE * Constant.DATAGRID_DIETS_IN_GRID + 40; 


    foreach (string x in lines) 
    { 
     DataGridViewColumn col = new DataGridViewTextBoxColumn(); 
     col.Width = Constant.DATAGRID_COLUMN_SIZE; 

     col.HeaderText = x; 
     int colIndex = grid[0].Columns.Add(col); 
    } 
} 

private void Form1_UserAddedRow(object sender, DataGridViewRowEventArgs e) 
{ 
    //I want to access grid[i] and modify it here. 
} 

回答

0

您得到DataGridViewRowEventArgs e作爲參數傳遞到您的事件處理程序,因此,您可以訪問像

e.Row.Cells["somename"].Value = "some_value"; 
+0

但我可以訪問整個datagridview嗎? 編輯:哦,我可以通過該行訪問datagridview。非常感謝,非常感謝:) –

+1

看到上面的答案。你應該能夠在你的事件處理程序中投入'sender'參數。 – PentaPenguin

1

的財產您應該能夠投發件人對象您的事件處理程序中的參數指向DataGridView的類型以檢索已生效的網格。

0
private void Form1_UserAddedRow(object sender, DataGridViewRowEventArgs e) 
{ 
    var grid = sender as DataGridView; 
    if (grid == null) return; 

    //... do something 

} 
+0

**來自審覈隊列**:我可以請求您在源代碼中添加一些上下文。僅有代碼的答案很難理解。如果您可以在帖子中添加更多信息,它可以幫助提問者和未來的讀者。 – RBT

+0

感謝您的請求。我將來會這樣做。剛剛省略了上下文,因爲我很匆忙,而且很自我解釋。 – CHS

相關問題