簡體   English   中英

如何在DataGridView C#中單獨檢查多個復選框

[英]How to check more than one checkbox individually in DataGridView C#

我想知道如何實現這一點,我嘗試了在 SO 上找到的許多解決方案,但沒有一個奏效

在此處輸入圖片說明

我希望能夠檢查例如第一個和第二個選項,但是當我檢查其中一個時,其他兩個未選中,如何避免這種情況?

我想知道我需要更改哪些事件或屬性才能單獨選擇多個復選框,而不是使用主復選框來選擇所有復選框,希望您能幫助我,謝謝。

我在 datagridview 的CellClick事件中嘗試了這段代碼

var isChecked = (bool)DGVProductos.Rows[e.RowIndex].Cells[e.ColumnIndex].Value;

if (isChecked)
{
    foreach (DataGridViewRow row in DGVProductos.Rows)
    {
        if (row.Index != e.RowIndex)
        {
            row.Cells["CheckProducto"].Value = !isChecked;
        }
    }
}

我不確定您的foreach循環試圖完成什么,但它取消選中所有不是選中的行的其他框。 如果您希望單獨選中這些框並保持選中狀態,請刪除foreach循環。

不清楚您嘗試在那里實現什么,您編寫的代碼與您所描述的完全相反,只需刪除該代碼,您就應該能夠檢查單個單元格。

但是,如果您嘗試將該列用作選擇指示器,則該列未綁定到任何屬性,請注意,這是不可能的,因為該列未綁定到檢查 1 行單元格的對象將自動檢查所有行,反之亦然。

旁注:無論您想實現什么,當用戶選中/取消選中復選框時需要運行的代碼應該在CellContentClick事件而不是CellClick事件上調用。

我找到了我想要實現的解決方案我將代碼放在此處以供其他面臨相同問題的人參考

private void DGVProductos_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
    if (e.ColumnIndex == 0)
    {
        if ((bool)DGVProductos.SelectedRows[e.ColumnIndex].Cells["CheckProducto"].Value == false)
        {
            DGVProductos.SelectedRows[e.ColumnIndex].Cells["CheckProducto"].Value = true;
        }
        else
        {
            DGVProductos.SelectedRows[e.ColumnIndex].Cells["CheckProducto"].Value = false;
        }
    }    
}

這樣我就可以像問題所說的那樣單獨檢查多個復選框,不確定是否是最好的方法,但這對我有用

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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