用户单击对话框的按钮时打开文件夹,并防止对话框关闭

时间:2019-02-17 09:51:42

标签: c# winforms

我有一个自定义对话框,其中包含一个按钮和一个我用作按钮的link_label。

当用户单击标签时,我想在Window Explorer中打开某个文件夹并保持对话框打开。通过确定要返回的对话框结果,我知道用户单击了哪个按钮。

private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
    this.DialogResult = DialogResult.No;      
}

private void simpleButton1_Click(object sender, EventArgs e)
{
    this.DialogResult = DialogResult.OK;     
}

在另一个类中,我有一个方法可以根据dialogResult返回布尔值:

DialogResult res = dig.ShowDialog();
return res == DialogResult.No;

然后,如果此方法返回true,则需要打开Win资源管理器并保持对话框打开,直到单击按钮。 问题是当试图阻止对话框通过MyDialog表单的FormClosing事件关闭时,资源管理器没有打开。如果我没有使用FormClosing,浏览器将打开,但对话框将关闭。

private void MyDialog_FormClosing(object sender, FormClosingEventArgs e)
{
    if (this.DialogResult == DialogResult.No)
    {
        e.Cancel = true;
    }
}

编辑:我无法使用表单的Linkclicked事件,因为我希望此对话框可重用并每次都处理结果。 (打开不同的路径取决于我在哪里使用对话框)

1 个答案:

答案 0 :(得分:0)

不打开资源管理器的原因是,当您拒绝关闭表单时,父代码不会继续打开资源管理器,
对于我来说,您想要实现的目标还不太清楚,但是您无法做到这一点,这是一个建议,为什么不基于FolderBrowserDialog点击并从inisde MyDialog打开labelMyDialog点击时关闭button,而不是由父母来处理决定。