我们的第一种形式是登录表单..如何在登录后打开下一个表单?如何从当前表单打开另一个表单?
回答
在您的登录表单中,我假设您在按钮控件的Click
事件方法内执行验证。所以,你会碰到这样的:这个代码的
Private Sub btnLogin_Click()
If ValidatePassword(txtPassword.Text) Then
' The password is correct, so show the main form and close the login form
MainForm.Show
Unload Me
Else
' The password is incorrect, so leave this form on screen
MsgBox "Invalid password entered!", vbError
txtPassword.SetFocus
End If
End Sub
两个有趣的特点是:
的
Show
方法,你要显示窗体对象调用。
在这种情况下,它可能会成为您的主要形式 - 用所谓的任何东西代替MainForm
。Unload
声明,它关闭并销毁指定的表单。
在这种情况下,Me
指的是登录表单,因为您完成了它。
+1好例子 – 2012-02-03 04:49:40
您需要拨打电话Show
,需要在登录表单后显示。你可以阅读更多关于Understanding Forms and form events
我的方法是避免尝试打开登录窗体作为第一个窗体。
取而代之让主窗体成为第一个,并在其Load事件中将您的登录窗体显示为模态对话框。这可以通过对其进行显示来首先显示主窗体。基于标准模板 “登录对话框的” 形式与一些代码的变化举例:
frmMain.frm
Option Explicit
Private Sub Form_Load()
Dim Control As Control
Show
frmLogin.Show vbModal, Me
With frmLogin
txtSuccess.Text = CStr(.LoginSucceeded)
If .LoginSucceeded Then
'Proceed normally, perhaps after capturing
'the User Name, etc.
txtUserName.Text = .User
txtPassword.Text = .Password
Else
'Do "Unload Me" or disable all controls
'as shown here, etc.
For Each Control In Controls
On Error Resume Next
Control.Enabled = False
On Error GoTo 0
Next
End If
End With
Unload frmLogin
End Sub
frmLogin.frm
Option Explicit
Public LoginSucceeded As Boolean
Public User As String
Public Password As String
Private Sub cmdCancel_Click()
LoginSucceeded = False
Hide
End Sub
Private Sub cmdOK_Click()
'Check for correct password, hard-coded here.
If txtPassword.Text = "password" Then
LoginSucceeded = True
User = txtUserName.Text
Password = txtPassword.Text
Hide
Else
MsgBox "Invalid Password, try again!", , "Login"
With txtPassword
.SetFocus
.SelStart = 0
.SelLength = Len(.Text)
End With
End If
End Sub
模态对话框可能是一个更好的解决方案。我的回答假定提问者已经有了什么,这并不总是最好的方法! – 2012-02-05 00:49:28
这不需要从Form_Load完成,它可以很容易地是菜单或按钮启动登录的结果......假设在登录之前让表单可见并且处于活动状态需要很多时间。也许在一次运行期间登录具有不同凭据的串行会话。 – Bob77 2012-02-05 18:06:05
- 1. 从另一个WPF表单打开一个新的WPF表单
- 2. 如何在打开另一个表单之前进行表单加载?
- 3. 如何禁用主表单,当另一个表单在vb中打开
- 4. 如何使表单视图从另一个表单视图打开只读odoo
- 5. 如何在单击按钮时打开另一个表单?
- 6. 建议如何打开新表单并关闭当前/第一表单?
- 7. 从另一个表单打开表单并获取一个值,然后将其传递回第一个表单
- 8. 如何一次打开多个表单
- 9. 如何打开一个包含表单
- 10. 如何在PyQt中点击QToolButton时打开另一个表单?
- 11. 我们如何将数据从一个打开的表单传递到另一个表单?
- 12. 如何从另一个表单调用表单?
- 13. 如何检测表单何时从另一个窗体关闭仍然打开?
- 14. drupal问题 - 如何从另一个模块打印表单?
- 15. 如何在另一个表单上放置一个表单?
- 16. 如何通过单击另一个图表的元素来打开Kibana图表
- 17. 从另一个表单调用一个表单
- 18. 将数据从一个表单传递到另一个表单
- 19. 将数据从一个表单发送到另一个表单
- 20. 如何将值从一个表单发布到另一个表单?
- 21. 如何从另一个表单调用一个表单中定义的函数?
- 22. 将表单和范围从一个表单复制到另一个表单
- 23. 如何在单击按钮时关闭表单并在面板中打开另一个表单?
- 24. 打开一个列表的菜单,当我在一个视图中单击
- 25. 打开一个iframe后提交表单
- 26. 我想打开另一个窗体基于Access中的另一个表单值
- 27. 用另一个线程上的方法/函数打开另一个表单?
- 28. 如何在另一个表单中加载表单?
- 29. 如何在提交表单时触发另一个表单。?
- 30. 如何在另一个表单中提交表单值提交
有我们的任何答复的管理帮助你解决你的问题? – anonymous 2012-02-03 05:09:37