我一直在 Visual Studio 中处理 Visual Basic 项目并遇到问题。
我知道项目设计器的应用程序页面中的启动表单属性可以更改为默认表单,但是我需要的是一种通过 ApplicationEvents.vb 中的代码根据应用程序设置中变量的值来执行此操作的方法。
目标是,如果用户完成表单,则将值分配给变量,例如变量用户名=“xxx”。如果此值为 true,则默认启动是登录表单(因为用户已经注册),如果为 false,则默认启动为注册表单。
我很感激我可以使用另一种形式来确定这一点,但这似乎是我浪费了 ApplicationEvents 的功能并且没有正确使用它(我也想避免空白表单在决定时不可避免的闪烁)。
我知道默认表单存储在 Application.myapp 中,但是随着 .exe 的最终发布,该文件(大概)不会随之导出,因此我想避免直接写入它。我还阅读了 windowsformsapplicationbase.mainform 属性,但是不知道如何使用它?
这是来自 ApplicationEvents.vb 的一段示例代码,用于演示我的问题。
If String.IsNullOrEmpty(My.Settings.username) Then
MsgBox("You have not registered")
'set register as default form
Else
MsgBox("You have registered")
'set login as default form
End If
通常,如果您需要对启动时发生的情况进行大量控制,您只需禁用应用程序框架即可。为此,只需取消选中启用应用程序框架中的复选框应用的选项卡我的项目设置设计器窗口。取消选中后,您将能够更改启动对象 to Sub Main。然后你可以添加一个新模块Main
方法,像这样:
Module Module1
Public Sub Main()
Application.EnableVisualStyles()
If String.IsNullOrEmpty(My.Settings.username) Then
Application.Run(New RegisterForm())
Else
Application.Run(New LoginForm())
End If
End Sub
End Module
但请注意,通过禁用应用程序框架,您将失去它提供的其他自动功能,例如ApplicationEvents
。如果你想使用应用程序框架,你可以通过简单地设置来完成同样的事情MyApplication.MainForm
财产在MyApplication.Startup
event:
Partial Friend Class MyApplication
Private Sub MyApplication_Startup(sender As Object, e As ApplicationServices.StartupEventArgs) Handles Me.Startup
If String.IsNullOrEmpty(My.Settings.username) Then
Me.MainForm = New RegisterForm()
Else
Me.MainForm = New LoginForm()
End If
End Sub
End Class
或者,您可以始终显示相同的表单,但随后让表单只包含一个UserControl
。然后你可以简单地切换哪个UserControl
根据设置显示。用户控件需要包括原本放置在两个不同窗体上的所有控件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)