C# 仅在弹出窗口=是时选中复选框
我在datagridview中有一个复选框,需要弹出“是/否”窗口来确认SQL端的事务。这部分工作正常,但如果我选择“否”,复选框仍会选中 如何确保该复选框在UI上具有正确的值 我使用的代码位于cellcontentclick中,正确复选框的代码如下:C# 仅在弹出窗口=是时选中复选框,c#,winforms,checkbox,C#,Winforms,Checkbox,我在datagridview中有一个复选框,需要弹出“是/否”窗口来确认SQL端的事务。这部分工作正常,但如果我选择“否”,复选框仍会选中 如何确保该复选框在UI上具有正确的值 我使用的代码位于cellcontentclick中,正确复选框的代码如下: if (e.ColumnIndex.ToString() == "3") { DataGridViewCheckBoxCell checkCell = (DataGridViewCheckBoxCell)caseSelectorDataG
if (e.ColumnIndex.ToString() == "3")
{
DataGridViewCheckBoxCell checkCell = (DataGridViewCheckBoxCell)caseSelectorDataGridView.Rows[e.RowIndex].Cells[3];
DataGridViewRow row = caseSelectorDataGridView.Rows[e.RowIndex] as DataGridViewRow;
System.Data.DataRowView SelectedRowView;
newCityCollectionDataSet.CaseSelectorRow SelectedRow;
SelectedRowView = (System.Data.DataRowView)caseSelectorBindingSource.Current;
SelectedRow = (newCityCollectionDataSet.CaseSelectorRow)SelectedRowView.Row;
DialogResult dialogResult = MessageBox.Show("Are you sure?", "WARNING", MessageBoxButtons.YesNo);
if (dialogResult == DialogResult.Yes && Convert.ToBoolean(checkCell.Value) == false)
{
if (Convert.ToBoolean(checkCell.Value) == false && caseSelectorDataGridView.IsCurrentCellDirty)
{
DataClasses1DataContext dc = new DataClasses1DataContext();
var matchedCaseNumber = (from c in dc.GetTable<CaseSelector>()
where c.CaseNumberKey == SelectedRow.CaseNumberKey
select c).SingleOrDefault();
var matchedCaseNumberProp = (from d in dc.GetTable<PropertyInformation>()
where d.CaseNumberKey == SelectedRow.CaseNumberKey
select d).SingleOrDefault();
DateTime today = DateTime.Now;
DateTime firstDay = new DateTime(today.Year, today.Month, 1);
reportsSent newReport = new reportsSent();
newReport.CaseNumberKey = SelectedRow.CaseNumberKey;
dc.reportsSents.InsertOnSubmit(newReport);
matchedCaseNumberProp.DateFinished = DateTime.Now;
matchedCaseNumberProp.Finished = -1;
dc.SubmitChanges();
SelectedRow.FinishedDate = DateTime.Now;
SelectedRow.FinishedID = Globals.GlobalInt;
SelectedRow.Finished = -1;
caseSelectorTableAdapter.Update(newCityCollectionDataSet);
var qry = dc.PropertyInformations.Where(c => c.DateFinished >= firstDay && c.DateFinished <= today && c.ClientKey == 2).Count();
var qry1 = dc.PropertyInformations.Where(c => c.DateFinished >= firstDay && c.DateFinished <= today && c.ClientKey == 3).Count();
txtFinished.Text = Convert.ToString(qry);
txtGRBFinished.Text = Convert.ToString(qry1);
txtFinished.Text = Convert.ToString(qry);
PerformRefresh();
}
}
else if (dialogResult == DialogResult.No)
{
}
}
假设我正确地阅读了问题,请尝试:
else if (dialogResult == DialogResult.No)
{
checkCell.Value = checkCell.FalseValue;
}
我在任何地方都看不到您正在将检查状态设置为true或false。。。您有对函数的调用,但您没有向我们展示这些函数,它们可能包含错误。此外,如果需要有用的答案,您应该删除不相关的代码并对代码进行注释。默认情况下,在c winform datagridview复选框中单击时,设置选中状态。我不知道在哪里可以访问它,所以我可以确保它只在我希望它出现的时候出现,这就是问题所在。我所做的就是将值-1传递到数据库。你可以看到你正在从checkCell访问它。上面代码中的值。当然,如果我删除了该代码,它仍然会选中该框。我不是说代码正在设置它,我是说你可以看到从哪里访问它。看来你已经解决了你的问题。不幸的是,这并没有完成工作。它仍然保持复选框处于选中状态。谢谢你,虽然我不知道。虚假价值!PerformRefresh只是我编写的一个刷新DGV的方法。
DialogResult dialogResult = MessageBox.Show("Are you sure?", "WARNING", MessageBoxButtons.YesNo);
if (dialogResult == DialogResult.No) return;