我正在尝试进行文件夹选择,如果所选驱动器上没有足够的空间,则会显示错误。我创建了一个自定义设计的错误和对话框表单,但使用FolderBrowserDialog时出现问题。
这是我的实际代码:
frmDialog dialog = new frmDialog("Install software", "The software cannot be found. Please select the path of the executable or let the launcher install it for you.");
dialog.SetYesButtonText("Install software");
dialog.SetNoButtonText("Browse for executable...");
if (dialog.ShowDialog() == DialogResult.Yes)
{
fbd = new FolderBrowserDialog();
fbd.Description = "Please select where do you want to install the software!";
DialogResult result = fbd.ShowDialog();
if (result == DialogResult.OK) // + space checking, but I deleted it for debugging now.
{
frmError error = new frmError("Not enough space", "Please select a folder with at lease 22 MB of free space.");
error.ShowDialog();
}
}
之后我会实际创建一个循环,直到用户选择一个有足够空间的文件夹或取消选择。
问题是错误对话框没有获得任何焦点。因此,当用户选择文件夹时,FolderBrowserDialog将消失,并且错误对话框将显示在新窗口中,但Visual Studio的窗口将获得焦点而不是错误对话框。正如我所经历的那样,这个问题不存在于我自己的表单中,因此如果我将fdb更改为frmDialog,则所有三个对话框都将以焦点相互显示。
答案 0 :(得分:3)
设置对话框的所有者,如下所示:
fbd.ShowDialog( dialog );
error.ShowDialog( dialog );
我建议设置其他对话框的所有者以设置父子关系。因此,当您关闭父表单时,子表单将关闭。如果您正在使用using
来电,也会在表单周围加ShowDialog
块。