Aus*_*xis 1 vb.net forms visual-studio-2013
我一直在Visual Studio中处理Visual Basic项目并遇到了问题.
我知道Project Designer的Application页面中的Startup表单属性可以更改为默认表单,但我需要的是通过ApplicationEvents.vb中的代码执行此操作,具体取决于应用程序设置中变量的值.
目标是如果用户完成表单,则将值分配给变量,例如变量username ="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
Run Code Online (Sandbox Code Playgroud)
通常,如果您需要对启动时发生的事情进行大量控制,您只需要禁用应用程序框架.为此,只需取消选中My Project设置设计器窗口的Application选项卡中的Enable application framework复选框.取消选中后,您将能够将Startup对象更改为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
Run Code Online (Sandbox Code Playgroud)
但请注意,通过禁用应用程序框架,您将失去其提供的其他自动功能,例如ApplicationEvents.如果要使用应用程序框架,只需MyApplication.MainForm在MyApplication.Startup事件中设置属性即可完成相同的操作:
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
Run Code Online (Sandbox Code Playgroud)
或者,您可以始终显示相同的表单,但随后表单只包含一个表单UserControl.然后您可以UserControl根据设置简单地切换显示的内容.用户控件需要包含原本放在两个不同表单上的所有控件.