【问题标题】:FolderBrowserDialog not showing up on second formFolderBrowserDialog 未显示在第二个表单上
【发布时间】:2012-06-18 15:44:08
【问题描述】:

好的,这就是我要实现的目标的主要本质以及它正在做的事情的症状。

我有一个主窗口窗体。在此表单上,用户可以单击一个按钮,该按钮将打开一个新的单独的表单。此表单将有一个按钮,该按钮应该显示一个 FolderBrowserDialog。相反,它只是锁定 form2 并且从不显示任何内容。

这基本上是我处理表单等的代码。

这是在我做了一些无趣的事情后加载的第一个表单。

FORM1.cs
//do stuff
//In a button.click method I do the following
Application.Run(new Form2(myParameters1, 2, 3));

这是从第一个表单调用的第二个表单

FORM2.cs
//do more stuff with the parameters on load
//user clicks on a button
private void button1_Click(object sender, EventArgs e)
{
    FolderBrowserDialog fbd = new FolderBrowserDialog();
    fbd.RootFolder = Environment.SpecialFolder.Desktop;
    fbd.Description = "This is the browser dialog box";

    if(fbd.ShowDialog() == DialogResult.OK)
    {
        //do stuff
    }
}

单击按钮后,对话框不显示,form2 被锁定,无法执行任何操作。

我也尝试过修改

fbd.ShowDialog() 

fbd.ShowDialog(Form2.ActiveForm)

结果相同。

任何帮助将不胜感激!如果您需要更多信息,请告诉我,我可以尽我所能提供。

编辑

我忘了提到(实际上完全忘了)打开第二种形式的方法是一个单独的线程。

所以第一个表单启动了一个线程,它打开了第二个表单,它应该打开一个它不是的对话框。现在我认为它与线程有关..

【问题讨论】:

  • 我复制了你所有的代码,它对我来说很好,除了 Desktop() 的语法错误
  • 你为什么要调用 Application.Run(new Form2(myParameters...) 而不是 var newForm = Form2(...); newForm.Show();
  • @KDiTraglia 哎呀……抱歉语法错误。 >
  • 为什么使用这条线:Application.Run(new Form2(myParameters1, 2, 3)); 。您是否已经使用 Application.Run 启动了第一个表单?
  • @TimLentine 嗯.. 不太确定.. 我会试试看会发生什么。也许这就是问题所在,我不确定为什么它对 KDi 工作得很好。>

标签: c# winforms folderbrowserdialog


【解决方案1】:

我已经解决了我的问题。最终导致 Form1 中打开 Form2 的线程无法打开 DialogBoxes,因为它完全与 UI 线程分开。

我最终解决了使用该线程并完全消除了它,从而解决了我的问题。对话框按我的意愿打开了。

感谢大家的回复!他们确实帮助我找出了我未能正确完成的其他一些事情。

【讨论】:

    【解决方案2】:

    我有类似的问题。主 GUI 线程正在创建一个后台工作线程以写入数据库,但是当后台线程失败时,用于显示自定义控制对话框以保存异常文件。此自定义对话框已正确显示,但不会显示用于打开 folderBrowserDialog 以保存异常文件的浏览按钮。我的自定义控件将在其标题栏中显示“未响应”。

    我所做的不是直接调用自定义控件,而是调用 UI 线程本身 像这样。

    void DBThread_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e)
        {
            if (e.Error != null)
            {                
                this.Invoke(new CrossThreadExceptionHandler(CatchInterThreadException), e.Error);                
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-05
      • 1970-01-01
      • 2012-03-03
      • 2011-08-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多