VB.NET表单在系统使用时不断消失

时间:2013-01-07 10:48:13

标签: vb.net winforms

我们有一个“核心”系统,我们用它来经营业务,任何时候都有大约15-18人使用它。该程序是用VB.NET编写的,有大约165个表单。

它的工作方式是当用户运行程序时,他/她被提示登录,如果登录成功,则显示“Main”表单,其中包含许多菜单(Customers,Suppliers ...)。从那里,他们可以点击菜单,在“Main”上打开另一个表单(“Main”表单需要在后台显示,因为它显示的信息与用户在其他屏幕时相关)< / p>

我们遇到的问题是,如果用户在使用“核心”系统(Outlook,Word,Chrome,真正的任何东西)时打开其他程序并切换到另一个程序然后再返回系统,它只会显示“主要”形式和顶部打开的任何其他形式消失。我们解决这个问题的方法是切换回他们打开的其他程序,然后单击窗口右上角的最小化按钮,直到所有其他程序都被最小化,这样只会使“Core”系统可见。然而,这对所有用户(包括我自己和其他开发人员)来说都是一种麻烦,我们真的需要解决这个问题,以免让员工高兴:)

我希望任何有关正确方向的建议或指示可以帮助我们解决这个问题,如果您需要更多信息,请随时询问。

2 个答案:

答案 0 :(得分:1)

您似乎正在ChildForm创建MainForm,但ChildForm本身正在显示Me.ShowDialog()。您应该尝试的是显示MainForm中的表单并将MainForm作为父项传递。这应该保持表格与其父母和顶部相关联。例如:

childForm.showDialog(Me)

其中MeMainFormThis是该方法的文档。

这是重要的部分:

  

所有者类型:System.Windows.Forms.IWin32Window

     

任何实现IWin32Window的对象,它代表将拥有模式对话框的顶级窗口。

这有意义吗?

答案 1 :(得分:0)

更改代码以显示对话框会稍微改变代码的行为,就像执行中的主要操作一直持续到关闭子窗体

但是你可以只使用show作为孩子(不是对话框)

childForm.show (Me)

这不会改变任何东西,除非你点击主表格时它会在其上显示整个孩子。