窗体刚加载就发生Form.closing ?(VS2008)

BeyondTimeSpace 2008-06-11 10:17:17
查了很久居然找不出原因,难道又是VS2008的Bug???

现象是:点击设置按钮
第一次点击:窗体显示后马上消失
第二次点击:窗体正常显




主窗体:
    Private Sub menuSetting_Setting_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles menuSetting_Setting.Click
frmSetting.ShowDialog(Me)
m_Tester.SetFactModel(m_FactModel) '设置完后也要更新厂商型号
End Sub




设置窗体:
Public Class frmSetting

Private m_Form As Control

Private Sub frmSetting_FormClosing(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosingEventArgs) Handles Me.FormClosing
CType(m_Form, Form).Close() '在关闭前先关闭当前设置窗体,触发当前窗体的Close事件
End Sub

Private Sub frmSetting_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Me.ShowInTaskbar = False
Me.Show()
Me.AutoScroll = True
TableLayoutPanel1.Dock = DockStyle.Fill

SetBtnColor(btnSetStep)
My.Computer.FileSystem.CopyFile(fName1, fNameTmp1, True) '创建临时文件
My.Computer.FileSystem.CopyFile(fName2, fNameTmp2, True)
LoadForm(frmSettingStep)
End Sub

Private Sub btn_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnSetStep.Click, btnTPLStep.Click, btnTPLCmp.Click, btnSystem.Click, btnExit.Click
If sender.Equals(btnSetStep) Then '步骤设置
SetBtnColor(btnSetStep)
LoadForm(frmSettingStep)
ElseIf sender.Equals(btnTPLStep) Then '步骤模板设置
SetBtnColor(btnTPLStep)
LoadForm(frmSettingTPLStep)
ElseIf sender.Equals(btnTPLCmp) Then '对比模板设置
SetBtnColor(btnTPLCmp)
LoadForm(frmSettingTPLCmp)
ElseIf sender.Equals(btnSystem) Then '系统变量设置
SetBtnColor(btnSystem)
LoadForm(frmSettingSystem)
ElseIf sender.Equals(btnExit) Then '退出
Me.Close()
End If

End Sub


Private Sub SetBtnColor(ByVal currentButton As Button)
Dim btn As Button
For Each btn In GBoxButton.Controls
btn.BackColor = Color.Empty
Next
currentButton.BackColor = Color.GreenYellow
End Sub

Private Sub LoadForm(ByVal ctlForm As Control)
If Not ctlForm.Equals(m_Form) Then
UnloadCurrentForm()
m_Form = ctlForm
LoadSubForm(m_Form, Me.GroupBox1)
End If
End Sub
Private Sub UnloadCurrentForm()
If Not m_Form Is Nothing Then
CType(m_Form, Form).Close() '用Form.close才能引发Form.closing事件
End If
End Sub

End Class

...全文
152 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
BeyondTimeSpace 2008-06-17
  • 打赏
  • 举报
回复
自己单独做了个测试工程,问题解决了,但还是没搞懂:

如果:
■将设置窗体显示为非模式窗体
■设置窗体中Me.ShowInTaskbar = False这句删除也OK

估计还有更多的途径解决这个问题,但却搞不懂为什么?希望有高手解释下,如果能找到根本原因,将赠送300积分。
pxb0420 2008-06-13
  • 打赏
  • 举报
回复
太乱了!!
问题比较多。
m_Form上来定义类型就不对呀
yanlongwuhui 2008-06-12
  • 打赏
  • 举报
回复
设置断点,单步跟踪,主要是LoadForm
只在此山中 2008-06-12
  • 打赏
  • 举报
回复
问题可能出在LoadForm
这1次执行时 If Not ctlForm.Equals(m_Form) Then 不是同一对象,执行了UnloadCurrentForm()

llsus 2008-06-12
  • 打赏
  • 举报
回复
程序写的太深奥了,看不懂。

16,717

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧