首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >打开子窗体时禁用MDI窗体控件

打开子窗体时禁用MDI窗体控件
EN

Stack Overflow用户
提问于 2013-08-13 07:23:19
回答 2查看 4.1K关注 0票数 2

我有一个名为MDIParent的MainForm表单。它有一个名为SelectDB的子表单。在SelectDB表单中,我有一个按钮,单击该按钮将打开FileDialog以浏览和选择.MDB文件。文件的路径显示在TextBox中。获得.MDB文件后,子窗体关闭,MainForm可见。在MainForm上,我有一个标签,它应该显示我在文本框中得到的路径。而且,当孩子的表格打开的时候。菜单条也应该禁用,或者您可以说MDI表单中的所有控件都应该禁用。

我的MainForm.vb (MDIParent)代码如下:

进口System.Windows.Forms

代码语言:javascript
复制
Public Class MainForm

    Private Sub MainForm_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        sDB.MdiParent = Me
        sDB.Show()
    End Sub

    Public Sub Formload()
        msMenu.Enabled = True
        lblPath.Text = OG.GetValue("DBPath")
        Me.Refresh()
    End Sub
End Class

我的SelectDB.vb (子表单)代码如下:

代码语言:javascript
复制
Public Class SelectDB    

    Private Sub btnBrowse_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnBrowse.Click
        Dim dlg As New OpenFileDialog
        dlg.DefaultExt = ".txt"
        dlg.Filter = "MDB Files (*.mdb)|*.mdb"
        Dim result As Nullable(Of Boolean) = dlg.ShowDialog()
        If result = True Then
            Dim filename As String = dlg.FileName
            txtPath.Text = filename
        End If
        OG.SetValue("DBPath", txtPath.Text)
        main.Formload()
        Me.Hide()
    End Sub

    Private Sub btnExit_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnExit.Click
        Application.Exit()
    End Sub

    Private Sub SelectDB_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
        Application.Exit()
    End Sub

End Class

请帮我处理这个。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-08-13 07:52:07

me.dispose()替换为me.hide()。这将帮助您完成预定的工作。

票数 2
EN

Stack Overflow用户

发布于 2013-08-13 10:03:17

您正在尝试实现的目标有几个选项( Hans已经提到)是最简单的选择:使用ShowDialog()而不是显示。

第二个选项:首先,您可以在主表单中创建一个公共方法,并在打开和关闭时从客户端调用该方法。比如:

主要形式

代码语言:javascript
复制
public void ChildControls(bool IsEnabled)
{
  msMenu.Enabled = IsEnabled;
}

孩子

代码语言:javascript
复制
 private void child_Activated(object sender, EventArgs e)
    {
        if (this.MdiParent != null)
            ((mainForm)this.MdiParent).ChildControls(false);
    }
    private void child_FormClosing(object sender, FormClosingEventArgs e)
    {
        if (this.MdiParent != null)
            ((mainForm)this.MdiParent).ChildControls(true);
    }

第三选择

使用mainform‘MdiChildActivate事件。当ActiveMdiChild == null再次启用控件时。但是,当您使用MdiChildActivate并且有更多(且不同的) Mdi (子)表单时,您应该在激活控件之前执行类型检查。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18202993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档