0

我有一个包含 60 多个表单的应用程序,而不是在每个表单中拥有 60 多个相同代码的副本,我希望有一个在加载任何表单时执行的代码实例。

子是标准的:
受保护的覆盖 Sub OnFormClosing(ByVal e As FormClosingEventArgs)
受保护的覆盖 Sub OnPaint(ByVal e As PaintEventArgs )
受保护的覆盖 Sub OnResize(ByVal e As System.EventArgs)
受保护的覆盖 Sub WndProc(ByRef m As Message )

我使用类和模块进行了无数次尝试,但只能使硬编码的表单按需要工作。

我已触发驻留在 TitleBar(非表单类)中的 OnPaint 事件,但我无法让 TitleBar 将任何自定义应用到任何表单。无论如何我可以绕过 TitleBar 的 Me 和 MyBase 中的值,并将它们分配给调用表单的值吗?或者我可以让 TitleBar 借出它的资源吗?任何帮助将不胜感激。顺便说一句,我想要完成的事情有一个词或短语吗?

这是一个漫长的反复试验。
谢谢

4

1 回答 1

2

像往常一样创建一个表单并添加该通用代码。在所有其他形式中,不要继承标准Form类,而是继承刚刚创建的包含公共代码的类。这就是 OOP 中继承的工作原理。

如果您从引用的库中继承表单,则可以在“添加新项”对话框中选择“继承的表单”,但这不适用于在同一项目中继承表单。至少,它在应用程序项目中不起作用,尽管我没有在库项目中测试过。另一种方法是照常添加表单,单击解决方案资源管理器中工具栏上的显示所有文件按钮,展开表单的节点,双击设计器代码文件将其打开,然后手动编辑表单的类型继承自,例如改变这个:

Partial Class Form2
    Inherits System.Windows.Forms.Form

对此:

Partial Class Form2
    Inherits Form1
于 2020-09-05T10:11:24.517 回答