C# 从分离的类中设置windows窗体属性值

C# 从分离的类中设置windows窗体属性值,c#,winforms,C#,Winforms,我正在编写一个windows窗体应用程序。我有很多表格, 我想一次设置所有属性。您需要的是所有表单的集合。虽然您可以自己制作,但实际上应用程序已经有了一个。当它接收到来自操作系统的关闭请求时,它使用它向每个表单发送Form.Close()。或者它用什么来决定“所有形式都结束了,时间到了” 由于WindowsForms来自前泛型时代,因此有一个专门的集合: 现在,一个列表就可以了,但当你得到一个soemthing时,它将是旧类型的。从中获取它们的静态属性是 OpenForms的声明 但是请注意,这

我正在编写一个windows窗体应用程序。我有很多表格,
我想一次设置所有属性。

您需要的是所有表单的集合。虽然您可以自己制作,但实际上应用程序已经有了一个。当它接收到来自操作系统的关闭请求时,它使用它向每个表单发送Form.Close()。或者它用什么来决定“所有形式都结束了,时间到了”

由于WindowsForms来自前泛型时代,因此有一个专门的集合:

现在,一个
列表就可以了,但当你得到一个soemthing时,它将是旧类型的。从中获取它们的静态属性是

OpenForms的声明

但是请注意,这仅包括打开的表单。已调用Show()或ShowDialog()上尚未关闭()的窗体。已实例化但未打开或已关闭的表单?应用程序并不关心这些。那些还没有被创造出来的?您需要手动应用此选项


IIRC有一些特殊情况,表格已经打开,但从那时起(而不是关闭)。我一直建议不要使用这个功能,因为它会引起各种各样的问题。因此,我不确定它对该列表的具体作用。

您可以使用
PropertyBinding
,该值是应用程序中的保存设置

我举一个例子:

在属性窗口中,选择应用程序设置、属性绑定:

并选择所需的属性(如果存在设置),选择或新建:

之后,您可以更改“设置”窗口上的值,所有具有设置的表单都将更改:

结果:

值保存在.config文件中:

<applicationSettings>
    <WindowsFormsPropertiesBind.Properties.Settings>
        <setting name="BackColor" serializeAs="String">
            <value>LightBlue</value>
        </setting>
    </WindowsFormsPropertiesBind.Properties.Settings>
</applicationSettings>

淡蓝色

所有属性?我想只是一些,对吗?就像一张“皮肤”,不知怎的?您想要硬编码的静态值,还是应该通过代码更改它们?您可以将属性绑定到共享模型。对于表单属性,可能需要一些设置。不是所有属性,而是所有表单共享相同的属性。此时,您需要所有表单的集合。我90%确信应用程序本身也有类似的功能,但如果有疑问,您可以自己制作一个。请查看:,…您已经使用了继承吗?