我有一个名为MainForm的MDIParent表单。它有一个名为SelectDB的子表单。在SelectDB表单中,我有一个按钮,单击该按钮可打开FileDialog以浏览并选择.MDB文件。文件的路径显示在TextBox中。获取.MDB文件后,子窗体关闭,MainForm可见。在MainForm上我有一个Label,它应该显示我在Textbox中获得的路径。而且,当儿童表格开放时。菜单条也应该被禁用,或者你可以说MDI表格中的所有控件都应该被禁用。
我的MainForm.vb(MDIParent)代码是这样的:
导入System.Windows.Forms
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(子窗体)代码是这样的:
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
请帮助我。
答案 0 :(得分:2)
放置me.dispose()
代替me.hide()
。这将有助于您完成预期的工作。
答案 1 :(得分:0)
你想要达到的目标有多种选择(Hans Passant已经提到过)是最简单的选择:使用ShowDialog()而不是Show。
第二个选项:首先,您可以在主窗体中创建一个公共方法,并在打开和关闭时从客户端调用该方法。像:
[主要表格]
public void ChildControls(bool IsEnabled)
{
msMenu.Enabled = IsEnabled;
}
[儿童]
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(子)形式时,你应该在(取消)激活控件之前进行类型检查。