到达表单实例

时间:2009-01-23 14:48:40

标签: c# winforms

我正在创建一个在MDI项目中设计的关卡编辑器应用程序。该应用程序有两种主要的查看模式,WorldEditor模式和ObjectEditor模式。根据模式,我想要一个单独的属性窗口来显示特定于当前模式的属性设置。

我曾考虑使用Activated事件,并从该事件告诉属性表单加载适当的设置。我需要从PropertyFormWorld Form类中到达Object才能完成此操作。这就是我被困住的地方。

我相信我应该能够通过将PropertyForm类声明为静态来解决这个问题。由于我一次只使用其中一种类型,因此我希望能够在全球范围内使用它。但是,将表单类声明为static会给出编译器错误。我做错了,如果有可能的话。

如何访问和搜索应用程序中活动的不同表单?

3 个答案:

答案 0 :(得分:0)

你需要的是一个单身人士,而不是一个静态阶级。

在没有太多性能损失的情况下,您可以创建PropertyForm的不同对象 - 每种类型的“视图”都有一个。您可以添加参数化构造函数 - 应该获取具有特定于每个视图的详细信息的对象。这将允许您为每个视图创建特定的PropertyForm。

如果您真的只想拥有PropertyForm的一个副本,那么更简单的方法是隐藏表单。在“show”事件处理程序中,您可以根据当前视图对其进行自定义。将单身方法视为最后一种方法。

答案 1 :(得分:0)

听起来像你的MDI父表单(它知道哪个MDI子窗口处于活动状态)应该保存对Property表单的引用。使用父窗体中的函数为每个创建的子窗口的Activated事件添加一个事件处理程序,该函数使用激活的子窗口中的信息来正确设置Property窗体。

Sesh关于Singleton的答案可能也适用,尽管这是另一个问题。

答案 2 :(得分:0)

您可以从sender事件处理程序中的Activated参数获得所需内容。