Как открыть другую форму из текущей формы? - PullRequest
1 голос
/ 03 февраля 2012

Наша первая форма - это форма для входа. Как я могу открыть следующую форму после входа в систему?

Ответы [ 3 ]

11 голосов
/ 03 февраля 2012

В вашей форме входа в систему я предполагаю, что вы выполняете проверку в методе события 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

Две интересные особенности этого кода:

  1. Метод Show, который вызывается для объекта формы, который вы хотите показать.
    В этом случае, вероятно, это будет ваша основная форма - замените MainForm на то, что она называется.

  2. Оператор Unload, который закрывает и уничтожает указанную форму.
    В этом случае Me относится к форме входа в систему, поскольку вы закончили с ней.

1 голос
/ 03 февраля 2012

Мой подход заключается в том, чтобы не пытаться открывать форму входа в качестве первой формы.

Вместо этого пусть основная форма будет первой, а в ее событии 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
1 голос
/ 03 февраля 2012

Вам нужно будет позвонить Show в форме, которая должна быть отображена после входа в форму.Вы можете прочитать больше о Понимание форм и событий форм

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...