C# 对话框属于对话框的奇怪行为
我有一个表单,我使用ShowDialog()方法打开它,这样用户就不能将控件更改回主表单,在子表单上我有一个MessageBox.Show()方法调用,它返回一个DialogResult 唯一的问题是,无论消息框的对话框结果如何,它都会导致我的子窗体关闭。我是否忽略了某个行为,或者我的代码是否有问题 主窗体中打开子窗体的代码:C# 对话框属于对话框的奇怪行为,c#,winforms,forms,dialog,C#,Winforms,Forms,Dialog,我有一个表单,我使用ShowDialog()方法打开它,这样用户就不能将控件更改回主表单,在子表单上我有一个MessageBox.Show()方法调用,它返回一个DialogResult 唯一的问题是,无论消息框的对话框结果如何,它都会导致我的子窗体关闭。我是否忽略了某个行为,或者我的代码是否有问题 主窗体中打开子窗体的代码: private void btnScanFree_Click(object sender, EventArgs e) { frmScan scan
private void btnScanFree_Click(object sender, EventArgs e)
{
frmScan scanForm = new frmScan();
scanForm.ShowDialog();
}
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();
}
}
以及子窗体上“取消”按钮单击方法中的代码:
private void btnScanFree_Click(object sender, EventArgs e)
{
frmScan scanForm = new frmScan();
scanForm.ShowDialog();
}
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();
}
}
在子窗体上,如果数据网格视图中没有行,则窗体应关闭,否则将显示一个消息框,其中包含“是”和“否”按钮,并询问用户是否要继续关闭窗体。但无论他们按是还是否,它都会同时关闭消息框(它总是应该关闭)和子表单(有一半的时间它不应该关闭).为什么不在
dgvScannedItems.RowCount
上添加一个监视,看看值是什么?BtnCancel
是一个对话框按钮,将窗体的对话框结果设置为取消、否或类似的内容。由于您已通过ShowDialog
以对话框的形式打开表单,因此设置对话框结果将导致表单关闭并返回结果
因此,您需要将BtnCancel
的DialogResult
属性设置为nothing,以防止这种“starnge”行为。为什么不将其放入注释中?!因为我的销售代表!:)需要50或更多的评论!这将如何阻止表单关闭?是的,btnCancel上的DialogResult属性设置为某个值。重置它,使其没有值(在Visual Studio的“属性”窗口中查看)。因此,在代码块结束之前,我需要将其设置为null?