【问题标题】:run a sub in all open MDIChild forms在所有打开的 MDI 子窗体中运行一个子窗体
【发布时间】:2017-08-17 21:24:53
【问题描述】:

我有一个 MDI windows 应用程序。 用户可以修改控件属性(例如颜色)。每个 MDI 子窗体都包含一个名为 ApplyMyUserProfile 的子窗体,用于设置颜色。

我想找到一种方法来立即运行 ApplyMyUserProfile 每个(打开的)MDI 子窗口。我可以识别打开的子表单,但我 不知道如何告诉每个表单为每个表单运行 ApplyMyUserProfile()。

这就是我想要做的::

私有子 ModifyUserProfileParametersInOpenForms()

Dim FormName As String = ""

' 循环遍历所有打开的 'MDI 子窗体

在 Application.OpenForms 中将每个框架作为表单

如果 frm.IsMdiChild 那么

FormName = frm.Name

Debug.Print(FormName) ' 这正确显示了打开的 MDI 子窗体

' 每个 MDI 子窗体都有一个名为 ApplyMyUserProfile() 的子窗体 ' 这个 sub 将修改与每个相关的控件属性(颜色等) ' 形式

frm.ApplyMyUserProfile()

' 这会产生错误“ApplyMyUserProfile 不是 ' Systems.Windows.Forms.form

frm.Refresh()

如果结束

下一帧

结束子

'感谢您的帮助!!

【问题讨论】:

  • tour 了解如何提出一个好问题

标签: .net mdi mdichild


【解决方案1】:
 For Each frm As Form In Application.OpenForms  

' 循环所有打开的 MDI 子窗体

        If frm.IsMdiChild Then

         If frm.Name <> "frmMyUserProfile" Then

            CallByName(frm, "Form_ReloadUserProfileParameters", CallType.Method)

            End If

        End If

    Next frm

'注意 'Form_ReloadUserProfileParameters() 是必须在每个子窗体上的公共子组件。该子程序中的任何内容都将在子程序上执行! (孩子) '完美!

【讨论】:

    猜你喜欢
    • 2014-10-28
    • 2014-07-02
    • 2020-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多