簡體   English   中英

如何使用LINQ將突出顯示的單元格傳遞到另一個DataGridView?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM