-1

要求

具有设置窗口(可通过菜单访问)的 WinForms 应用程序。最重要的是,在应用程序运行时,在显示应用程序窗口之前,应首先显示设置窗口。(这会强制用户在每次运行应用程序时验证/修改设置)。

到目前为止我的实现

有一个MainForm和一个SettingsForm。有SettingsForm几个输入字段,它们在关闭窗口时在内部保存。有一个菜单项MainForm可以打开SettingsForm. 为了显示SettingsForm(通过菜单项)我调用:

SettingsForm settingsForm = new SettingsForm();
settingsForm.Owner = this;
settingsForm.ShowDialog();

为了在显示SettingsForm之前显示,我在执行任何其他操作之前MainForm调用了上面的代码。MainForm_Load()

问题

在应用程序运行时,SettingsForm会显示 。但在 2-3 秒后,它会冻结。

SettingsForm是“静态的” 。这意味着它唯一的操作是在关闭窗口时保存输入文件的值。

Timer[编辑] 问题是由MainForm. 因此,整体设计是可以的,可以作为一个有效的解决方案。

4

1 回答 1

0

我所有的项目都有设置/用户登录屏幕。为了防止这种情况,我要做的是打开不可见的实际主窗体,但在 FormLoad() 中,我调用了显示对话框,所有我需要输入的屏幕。然后在检查所有对话框结果是否有效后,我让主窗体的 formload() 继续,通常剩下的就是对可能在该主窗体上的仪表板元素应用过滤器,最后放回可见的窗体。

我还要补充一下,您应该使用不透明度而不是可见性,因为它会导致屏幕闪烁。我注意到在普通商用计算机上它们非常慢,如果您在设计时将属性网格中的默认可见性设置为 visible = false ,那么当调用 formLoad() 时表单实际上会显示,但随后会看到属性并在之后变得不可见. 在带有视频卡的 1.8/2.0 ghz 计算机上,除非您在加载方法中加载大量垃圾内容,否则您看不到这么多东西。我发现一种解决方法是将不透明度设置为 0。从个人结果体验中可以看出,在表单渲染之前将不透明度设置为 0(实际上并没有检查对绘制和类似内容的覆盖)。所以我停止使用可见性,如果它需要在开始时不可见,而是使用不透明度。

于 2013-09-17T11:58:02.757 回答