[英]How can i use LINQ to pass highlighted Cells to another DataGridView?
是否可以使用LINQ樣式查詢將突出顯示的單元格的值(不帶ComboBox)傳遞給另一個DataGridView? 在下圖中,標記了要傳輸的單元。
預先非常感謝您的想法!
private void Button3_Click(object sender, EventArgs e)
{
for (int i = 0; i < dataGridView2.Rows.Count; i++)
{
for(int j = 0; j < dataGridView2.Columns.Count; j++)
{
if (!(dataGridView2.Rows[i].Cells[j].Value == null))
{
var cr =
dataGridView2.Rows[i].Cells[j].Style.BackColor =
Color.Red;
var cg =
dataGridView2.Rows[i].Cells[j].Style.BackColor =
Color.LawnGreen;
dataGridView3.Rows.Add(cr);
dataGridView3.Rows.Add(cg);
}
}
}
}
好的,這是一些使用linq的示例代碼,它將在單元格具有特定背景色的位置復制值。 使用Linq的關鍵是Cast方法,該方法可以采用非通用IEnumerable
並將其轉換為通用IEnumerable
因此我們可以使用linq語法。 它還使用Select
重載,該重載包括用於索引的參數,因此您可以輕松地索引到第二個數據網格中,以獲取正確的行/列。
var linqable = dataGridView2.Rows.Cast<DataGridViewRow>().Select((r, y) => new
{
row = r,
rowNum = y,
cells = r.Cells.Cast<DataGridViewCell>().Select((a, b) =>
new
{
cell = a,
cellNum = b
})
});
foreach(var row in linqable)
{
foreach(var cellWithRed in row.cells.Where(x => x.cell.Style.BackColor == Color.Red))
{
dataGridView3.Rows[row.rowNum].Cells[cellWithRed.cellNum].Value = cellWithRed.cell.Value;
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.