簡體   English   中英

DataGridView CellContent 復選框更改事件

[英]DataGridView CellContent Checkbox Change Event

我有一個包含 3 列的 datagridview:發票 ID、價格和一個復選框。

如果單擊復選框,該行的價格將變為 0。 現在正在發生。

但是當我取消選中復選框時,價格應該是原樣。 但它仍然為零。 下面是我的單元格內容點擊代碼。 如果未選中復選框,我如何獲得以前的價格?

private void grvItems_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
    var senderGrid = (DataGridView)sender;
    DataGridViewRow row = this.grvItems.CurrentRow;
    if (e.RowIndex >= 0)
    {
        if (senderGrid.Columns[e.ColumnIndex] is DataGridViewCheckBoxColumn &&
             e.RowIndex >= 0)
        {
            if (e.ColumnIndex == grvItems.Columns["UnderWarranty"].Index)
            {
                string returnAmt = lblReturnAmountVal.Text;
                bool isCheked = (bool)grvItems.Rows[e.RowIndex].Cells["UnderWarranty"].EditedFormattedValue;

                if (isCheked)
                {
                    grvItems.Rows[e.RowIndex].Cells["PRICE"].Value = "0.00";
                    lblReturnAmountVal.Text = "0.00";
                }
                else
                { 

                }
                grvItems.EndEdit();
            }
        }
    }
}

您是否嘗試過 CheckedChanged 事件? 在 Winforms 上並使用應該有幫助的復選框。 未經測試的代碼如下:

private void checkBox1_CheckedChanged(object sender, EventArgs e)
{
     if (checkBox1.Checked)
     {
         value = 0;
     }
     else
     {
         // whatever other logic should happen
     }
 }

如果您想恢復到原始數據值,您需要將其存儲在某處。

您始終可以為此使用單元格的Tag屬性:

             DataGridViewCell cell = grvItems.Rows[e.RowIndex].Cells["PRICE"];
            if (isCheked)
            {
                cell.Tag = cell.Value;
                cell.Value = "0.00";
                lblReturnAmountVal.Text = "0.00";
            }
            else
            { 
                //            use your cell's datatype here!!  VVV
                if (cell.Tag != null) cell.Value = cell.Tag as decimal;
            }

暫無
暫無

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

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