繁体   English   中英

对话框属于对话框的奇怪行为

[英]Strange behaviour with dialog box belonging to dialog box

我有一个使用ShowDialog()方法显示的表单,因此用户无法将控件更改回主表单,在子表单上,我有一个MessageBox.Show()方法调用,该方法返回DialogResult。

唯一的问题是,无论消息框的对话框结果如何,它都会导致我的子窗体关闭。 我有没有忽略的行为,还是我的代码有问题?

在主窗体中打开子窗体的代码:

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();
        }
    }

在子表单上,如果数据网格视图中没有行,则该表单应关闭,否则,将出现一个带有“是”且没有按钮的消息框,以及一个询问用户是否要继续关闭该表单的问题。 但是,无论他们按是还是否,它都会同时关闭消息框(始终应该关闭)和子窗体(不应该关闭一半时间)。

BtnCancel是一个对话框按钮,将窗体的DialogResult设置为取消或不设置或类似设置。 由于已通过ShowDialog设置将窗体作为对话框打开,因此DialogResult导致窗体关闭并返回结果。

因此,您需要将BtnCancelDialogResult属性设置为“ BtnCancel ,以防止出现这种“ BtnCancel ”的行为。

为什么不在dgvScannedItems.RowCount上添加监视并查看该值是什么?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM