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