一个主窗体内具有多个窗体的设计应用程序

发布于 2024-11-15 20:07:45 字数 344 浏览 4 评论 0原文

我想制作一个应用程序,该应用程序具有一个主窗体,该窗体具有一种功能=添加新窗体。

我不知道如何创建表单,它们是由用户动态创建的(主表单中的 AddForm 方法)。

所有 sub 形式都是相同的,但其中一些 prop 接收差异参数(可以在 ctor 中或更高版本中)。

我希望能够在关闭主窗体时关闭所有窗体。

在显示新表单之前,我想显示设置表单(以获取表单参数),可能使用 ShowDialog 方法并对表单进行验证检查,如果表单验证,则将显示新表单,如果没有(或者如果用户取消) 该表格将被处理。

我了解 MDI,但我真的更喜欢其他方式

有什么想法吗?

谢谢!

I want to make an application that have one main form that have one functionality = Add new form.

I dont know how forms will be created, they are created dynamically by the user (AddForm methos from the main form).

All the subs forms are the same but some of thier prop receive differnce parameters (it can be in the ctor or later).

I want to be able to close all the forms when I close the main form.

Before new form will displayed I want to display setting form (to take the form parameters) maybe with ShowDialog method and do validating check on the form and just if the form validate the new form will displayed, if not (or if the user prees cancel) the form will disposed.

I know aboout MDI but I really perfer other way

Any ideas?

Thanks!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

回梦 2024-11-22 20:07:45

当主窗体关闭时关闭所有窗体有些简单,您只需在“子”窗体的 Show() 方法中传递主窗体引用即可;例如,如果您显示 main 中的 child,您将执行以下操作:

child.Show(this);

如果您的主窗体不是真正的“程序的主窗体”,但您想关闭所有“子”窗体,则需要执行此操作。

然而,将所有这些连接在一起最好是在一些特殊的类中完成,例如 ScreenRepository。在此类中,您随时都会有一组打开的表单,您可以将表单创建推迟到此类(以便此类自动注入表单父级)等...拥有此类将很容易重新激活(给出focus) 表单(如果它位于其他表单后面),如果需要则创建新表单等...

Closing all forms when main form is closed is somewhat easy, you just pass the main form reference in Show() method of the "child" forms; e.g. if you show child from main, you do:

child.Show(this);

This needs to be done if the your main form is not the real "main form of the program", but you want to close all "child" forms.

However, wiring all this together would preferably be done in some special class for this purpose, maybe called ScreenRepository. In this class, you would have a collection of open forms at any moment, you would deffer form creation to this class (so that this class automatically injects form parent) etc... Having this class would be easy to re-activate (give focus) the form if it is behind other forms, create new form if needed etc...

喜爱皱眉﹌ 2024-11-22 20:07:45

想法很简单,创建一个应用程序,在开始时打开主窗体,然后在需要时打开其他窗体,如果关闭主窗体,其余窗体也将关闭。就像 GIMP 中一样。

Idea is simple create a application that open a main form a the beginning and then open open other forms if needed if you close main form rest of forms are also closed. Like in GIMP.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文