我有一个自定义对话框,其中包含一个按钮和一个我用作按钮的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事件,因为我希望此对话框可重用并每次都处理结果。 (打开不同的路径取决于我在哪里使用对话框)
答案 0 :(得分:0)
不打开资源管理器的原因是,当您拒绝关闭表单时,父代码不会继续打开资源管理器,
对于我来说,您想要实现的目标还不太清楚,但是您无法做到这一点,这是一个建议,为什么不基于FolderBrowserDialog
点击并从inisde MyDialog
打开label
在MyDialog
点击时关闭button
,而不是由父母来处理决定。