我正在创建一个在MDI项目中设计的关卡编辑器应用程序。该应用程序有两种主要的查看模式,WorldEditor
模式和ObjectEditor
模式。根据模式,我想要一个单独的属性窗口来显示特定于当前模式的属性设置。
我曾考虑使用Activated
事件,并从该事件告诉属性表单加载适当的设置。我需要从PropertyForm
或World
Form类中到达Object
才能完成此操作。这就是我被困住的地方。
我相信我应该能够通过将PropertyForm
类声明为静态来解决这个问题。由于我一次只使用其中一种类型,因此我希望能够在全球范围内使用它。但是,将表单类声明为static
会给出编译器错误。我做错了,如果有可能的话。
如何访问和搜索应用程序中活动的不同表单?
答案 0 :(得分:0)
你需要的是一个单身人士,而不是一个静态阶级。
在没有太多性能损失的情况下,您可以创建PropertyForm的不同对象 - 每种类型的“视图”都有一个。您可以添加参数化构造函数 - 应该获取具有特定于每个视图的详细信息的对象。这将允许您为每个视图创建特定的PropertyForm。
如果您真的只想拥有PropertyForm的一个副本,那么更简单的方法是隐藏表单。在“show”事件处理程序中,您可以根据当前视图对其进行自定义。将单身方法视为最后一种方法。
答案 1 :(得分:0)
听起来像你的MDI父表单(它知道哪个MDI子窗口处于活动状态)应该保存对Property表单的引用。使用父窗体中的函数为每个创建的子窗口的Activated事件添加一个事件处理程序,该函数使用激活的子窗口中的信息来正确设置Property窗体。
Sesh关于Singleton的答案可能也适用,尽管这是另一个问题。
答案 2 :(得分:0)
您可以从sender
事件处理程序中的Activated
参数获得所需内容。