gpt4 book ai didi

c# - DataGridView CellValidated 事件在关闭表单时触发

转载 作者:太空宇宙 更新时间:2023-11-03 13:07:14 27 4
gpt4 key购买 nike

情况:我在窗体上放置了一个 DataGridView。在 DataGridView 对象中,我会检查一些单元格 - 例如,如果用户输入的金额不大于 100。当用户使用 Enter、Tab 或箭头键离开单元格时,将执行检查。

问题:一切正常,但是当光标位于单元格中并且值大于 100 并且用户按下表单上的“X”按钮(关闭按钮)时,消息仍然出现。

问题:当用户单击表单上的 X 按钮时,如何防止出现 MessageBox?

代码示例:

private void dgv_CellValidated(object sender, DataGridViewCellEventArgs e)
{
try
{
const int nColumn = 2;
if (!e.ColumnIndex.Equals(nColumn))
{
return;
}

if (e.ColumnIndex.Equals(nColumn))
{
double nMengeSource;
double.TryParse(dgv.Rows[e.RowIndex].Cells[fldMenge.Name].Value.ToString(),
out nMengeSource);

double nMengeLos;
double.TryParse(dgv.Rows[e.RowIndex].Cells[fldMengeLos.Name].Value.ToString(),
out nMengeLos);

// prüfe ob erfasste Menge die Menge im Los überschreitet
if (nMengeSource > nMengeLos)
{
var sMsg = String.Empty;
sMsg += "Warning! Value is greather than allowed!";
MessageBox.Show(sMsg, "Check...", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
}
}
catch (Exception ex)
{
Dialog.SetDefaultCursor();
MessageBox.Show(MethodBase.GetCurrentMethod().Name + @"\n\n" + ex + @"\n\n" + ex.Message);
}
}

最佳答案

另一种方法是:

protected override void WndProc(ref Message m)
{
if(m.Msg == 0x0010)
this._dataGridView1.CausesValidation = false;
base.WndProc(ref m);
}

我认为答案中的 0xffff 是多余的。你也可以这样做:

switch (m.WParam.ToInt64() & 0xfff0)

关于c# - DataGridView CellValidated 事件在关闭表单时触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30343899/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com