【发布时间】:2013-02-06 03:47:18
【问题描述】:
我有一个报表名称列表,在 ReportViewer 控件中显示为树层次结构。当用户单击报告名称时,会加载一个输入表单,用户输入一些值并按 OK。此时,启动屏幕应该在后端进程发生时加载(连接到数据库、检索值等)。在 Reportviewer 编辑器中加载报告后,启动画面应关闭。
到目前为止,我可以显示启动画面,但它会卡在那个点,实际报告不会加载,并且启动画面会永远保持。
是否可以在应用程序中间而不是在应用程序启动时使用启动画面?如果是这样,我该如何继续加载报告?
static class Program
{
[STAThread]
static void Main(string[] args)
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new SnapPlusReports());
//new SplashScreenApp().Run(args);
}
}
public class SplashScreenApp : WindowsFormsApplicationBase
{
private static SplashScreenApp _application;
public static void Run(Form form)
{
_application = new SplashScreenApp { MainForm = form };
_application.Run(Environment.GetCommandLineArgs());
}
protected override void OnCreateSplashScreen()
{
this.SplashScreen = new ShowProgress();
base.OnCreateSplashScreen();
}
}
【问题讨论】:
-
您是否尝试过使用
BeginInvoke()在单独的线程上运行它?另外,您没有将其显示为模态,对吗?请发布一些特定解决方案的代码... -
你确定你的工作安排在后台线程而不是 UI 线程本身吗?
-
@allen - 我正在尝试使用 Visual Basic 程序集来实现。这是一个链接 - softwarepassion.com/…
-
@PinnyM - 添加了一些代码。它在应用程序启动时工作正常。但这不是我想要的。我希望加载进度条,然后在 reportviewer 编辑器加载报告时关闭它。
-
我很好奇你是否找到了解决这个问题的方法以及你使用了什么。