【发布时间】:2018-02-05 17:21:31
【问题描述】:
我想在所有打开的子窗体上为某种类型的控件设置背景颜色。我有一个 MdiParent 表单,用于在其内部打开其他表单。我不想为每个子表单添加代码,因为这会非常广泛。这将用作应用程序的主题功能,因此我希望它根据主窗体中的逻辑自动更改背景颜色。是否存在可以触发所有 Form.Load 事件的全局事件?
到目前为止,我已经在父窗体中创建了一个事件,但它不适用于嵌套控件
Private Sub frmMain_MdiChildActivate(sender As Object, e As EventArgs) Handles Me.MdiChildActivate
Dim ParentControl As frmMain = sender
Dim ChildControl = ParentControl.ActiveControl
If ChildControl IsNot Nothing Then
For Each FormControl As Control In ChildControl.Controls
If FormControl.GetType = GetType(GroupBox) Then
RemoveHandler FormControl.Paint, AddressOf PaintBorderlessGroupbox
AddHandler FormControl.Paint, AddressOf PaintBorderlessGroupbox
End If
Next
End If
End Sub
【问题讨论】:
-
当然有,你想做什么?
-
创建一个包含所有共享属性值的静态类(VB 中的模块)。你也可以从
Form继承并根据你的需要进行自定义 -
@Codexer 我在父窗体中创建了一个 MdiChildActivate 事件,该事件为我想在子窗体中更改的每个控件创建一个 Paint 事件处理程序。问题是这不适用于嵌套控件。
-
@jonathana 除了父表单之外,我不想在现有表单中添加任何代码
-
如果您不想添加任何代码,您打算如何解决问题?我同意,为共享属性创建一个模块。
标签: vb.net winforms event-handling mdichild mdiparent