【问题标题】:Change Backcolor for all inherited forms更改所有继承表单的背景色
【发布时间】:2021-03-26 14:55:46
【问题描述】:

我有一个基本形式和一些继承自它的形式。 称它们为 BaseForm 和 Form1、Form2 我想在 Form1 中选择一种颜色,这些颜色设置在所有继承的表单中。 如果在更改颜色后打开表单,那将有效。 让我解释。 我打开Form1 选择颜色并设置一个全局变量(glColorVariable)。 Baseform.Designer.vb 中的 Backgroundcolor 已设置

me.backcolor=glColorVariable

Form1 中的颜色没有变化

如果我现在打开 form2,form2 中的颜色会改变。

我怎样才能...在 Form1 中重新绘制我的 Baseform 以改变颜色。 非常感谢!

科妮莉亚

【问题讨论】:

标签: vb.net forms oop inheritance


【解决方案1】:

您不能循环表单以便更改它们的参数。 我认为 Assembly.GetExecutingAssembly().GetTypes() 是死路一条。 一种解决方案,如果您使用表单填充列表元素。

Dim Forms As New List(Of Form)
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Forms.Add(My.Forms.Form1)
    Forms.Add(My.Forms.Form2)
    Forms.Add(My.Forms.Form3)
End Sub
Sub SetBackColors(ByVal c As Color)
    For Each f In Forms
        f.BackColor = c
    Next
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    SetBackColors(Color.Red)
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    Form2.Show()
    Form3.Show()
End Sub

或者 Jimi 写的,使用 DataBindings:

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Form2.DataBindings.Add("BackColor", Me, "BackColor", False, DataSourceUpdateMode.OnPropertyChanged)
    Form3.DataBindings.Add("BackColor", Me, "BackColor", False, DataSourceUpdateMode.OnPropertyChanged)
End Sub
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    Me.BackColor = Color.Red
End Sub
Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click
    Form2.Show()
    Form3.Show()
End Sub

【讨论】:

  • 您好,感谢您的回答,带有属性绑定的解决方案效果很好。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2022-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-25
  • 1970-01-01
相关资源
最近更新 更多