FolderBrowserDialog.ShowDialog() 后不关注其他形式
No focus on other form after FolderBrowserDialog.ShowDialog()
我正在尝试进行文件夹选择,如果所选驱动器上的 space 不足,则会显示错误。我已经创建了一个自定义设计的错误和对话框表单,但是使用 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();
}
}
之后我实际上会做一个循环,直到用户选择了一个足够space的文件夹或取消选择。
问题是错误对话框没有获得任何焦点。因此,当用户选择文件夹时,FolderBrowserDialog 消失,错误对话框显示在新的 window 中,但 Visual Studio 的 window 获得焦点而不是错误对话框。根据我的经验,我自己的表单不存在这个问题,所以如果我将 fdb 更改为 frmDialog,所有三个对话框将依次显示焦点。
像这样设置对话框的所有者:
fbd.ShowDialog( dialog );
error.ShowDialog( dialog );
我建议将其他对话框的所有者设置为父子关系。因此,当您关闭父窗体时,子窗体也会关闭。如果您使用 ShowDialog
调用,还要在表单周围放置一个 using
块。
我正在尝试进行文件夹选择,如果所选驱动器上的 space 不足,则会显示错误。我已经创建了一个自定义设计的错误和对话框表单,但是使用 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();
}
}
之后我实际上会做一个循环,直到用户选择了一个足够space的文件夹或取消选择。
问题是错误对话框没有获得任何焦点。因此,当用户选择文件夹时,FolderBrowserDialog 消失,错误对话框显示在新的 window 中,但 Visual Studio 的 window 获得焦点而不是错误对话框。根据我的经验,我自己的表单不存在这个问题,所以如果我将 fdb 更改为 frmDialog,所有三个对话框将依次显示焦点。
像这样设置对话框的所有者:
fbd.ShowDialog( dialog );
error.ShowDialog( dialog );
我建议将其他对话框的所有者设置为父子关系。因此,当您关闭父窗体时,子窗体也会关闭。如果您使用 ShowDialog
调用,还要在表单周围放置一个 using
块。