属于对话框的对话框行为奇怪
本文关键字:对话框 属于 | 更新日期: 2023-09-27 18:17:44
我有一个表单,我使用ShowDialog()方法来调出,这样用户就不能将控制更改回主表单,并且在子表单上,我有一个MessageBox.Show()方法调用,它返回一个dialgresult。
唯一的问题是,无论消息框的对话框结果是什么,它都会导致子表单关闭。是否有我忽略的行为,或者我的代码有问题?
主表单中打开子表单的代码:
private void btnScanFree_Click(object sender, EventArgs e)
{
frmScan scanForm = new frmScan();
scanForm.ShowDialog();
}
子窗体上的cancel button click方法中的代码:
private void btnCancel_Click(object sender, EventArgs e)
{
if (dgvScannedItems.RowCount > 0)
{
DialogResult dr = MessageBox.Show("There are scanned items that have not been inserted to the database. Are you sure you want to go back?", "Go Back", MessageBoxButtons.YesNo);
if (dr == System.Windows.Forms.DialogResult.Yes)
{
this.Close();
}
}
else
{
this.Close();
}
}
在子表单上,如果数据网格视图中没有行,那么表单应该关闭,否则应该出现一个带有yes和no按钮的消息框和一个询问用户是否要继续关闭表单的问题。但是无论他们按yes还是no,它都会关闭消息框(它总是应该这样)和子窗体(它有一半的时间不应该这样)。
BtnCancel
是一个对话框按钮,并将窗体的DialogResult
设置为取消或没有或类似的东西。由于您已经通过ShowDialog
作为对话框打开了表单,设置DialogResult
导致表单关闭并返回结果。
所以你需要将BtnCancel
的DialogResult
属性设置为none来防止这种"奇怪"的行为
为什么不在dgvScannedItems.RowCount
上添加一个手表,看看值是什么?