[一个登录窗体的完整范例,包括登录,密码更改,输入错误三次退出]

[ 一个登录窗体的完整范例,包括登录,密码更改,输入错误三次退出 ] 2004-12-31

运行效果如下:(请参考设置窗体布局)

(登录主窗体效果) (修改密码窗体效果)

控件名称说明: ‘ cboUser 就是图中的 combobox 控件

Public Class frmLogin

Inherits System.Windows.Forms.Form

Public Sub New ()

MyBase .New()

' 该调用是 Windows 窗体设计器所必需的。

InitializeComponent()

' 在 InitializeComponent() 调用之后添加任何初始化

' 填充数据,并定义 datatable 的主键

‘ 请根据情况选择连接方式和数据库类型

Dim constr As String = "server=localhost;uid=sa;pwd=;database=sheeronerp"

Dim str As String = "SELECT id,name,password,power FROM Login ORDER BY name"

Dim sqlcon As New SqlClient.SqlConnection()

Dim sqldpr As New SqlClient.SqlDataAdapter(str, sqlcon)

Try

sqlcon.ConnectionString = constr

sqlcon.Open() ‘ 其实没有 sqlcon.open() 和 sqlcon.close() 语句也没关系,适配器会自动进行

sqldpr.Fill(table)

Catch ex As Exception

MessageBox.Show(ex.Message)

Finally

sqlcon.Close()

End Try

‘ 设置主键,目的是使用 find() 方法

table.PrimaryKey = New DataColumn() {table.Columns("id")}

Me .cboUser.DataSource = table

Me .cboUser.DisplayMember = "name"

Me .cboUser.ValueMember = "id"

' 初始时不选中任何项

Me .cboUser.SelectedIndex = -1

Me .cboUser.Focus()

End Sub

' 窗体重写处置以清理组件列表。

Protected Overloads Overrides Sub Dispose( ByVal disposing As Boolean )

If disposing Then

If Not (components Is Nothing ) Then

components.Dispose()

End If

End If

MyBase .Dispose(disposing)

End Sub

Dim count As Integer = 0 ' 登录出错记数器 , 登录时输入 3 次均错误则自动退出

Dim table As New DataTable()

‘ 确定按钮代码

Private Sub btnok_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnok.Click

If Me .cboUser.Text = "" Then

MessageBox.Show(" 请选择用户名称! ")

cboUser.Focus()

Return

End If

If Me .txtPwd.Text = "" Then

MessageBox.Show(" 请输入用户密码! ")

txtPwd.Focus()

Exit Sub

End If

' 获取 combobox 中选择的用户 id, 检索这条记录

Dim getrows As DataRow = table.Rows.Find(cboUser.SelectedValue)

If Not (getrows Is Nothing ) Then

Dim password As String = Trim(getrows("password"))

If password.Trim(" ") = txtPwd.Text.Trim(" ") Then

UserId = cboUser.SelectedIndex

UserName = cboUser.Text

UserPower = getrows.Item("power")

Me .Dispose()

'???????????????????????

' 显示主窗体

Dim newform1 As New frmorder()

newform1.ShowDialog()

Else

' 输入不正确的话,则判断输入次数, 3 次错误则退出

If count = 2 Then

MessageBox.Show(" 密码错误输入 3 次,即将退出系统! ")

End

Else

MessageBox.Show(" 密码有误,请重新输入! ")

count = count + 1

Me .txtPwd.Focus()

Me .txtPwd.SelectAll()

Return

End If

End If

End If

End Sub

‘ 取消按钮代码

Private Sub btncancle_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btncancle.Click

End

End Sub

‘更改密码按钮代码

Private Sub btnupdate_Click( ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnupdate.Click

If Me .cboUser.Text = "" Then

MessageBox.Show(" 请输入或选择登录帐户! ")

cboUser.Focus()

Return

End If

Dim findrows As DataRow

findrows = table.Rows.Find(cboUser.SelectedValue)

' 获取所选 id 对应的密码

Dim strpassword As String = Trim(findrows("password"))

' 定义窗体实例,并传递参数过去

Dim formnew As New frmUpdatePWD(cboUser.SelectedValue, strpassword)

formnew.ShowDialog()

End Sub

Private Sub cboUser_KeyPress( ByVal sender As Object , ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles cboUser.KeyPress

‘按下回车键响应 TAB 键操作

If e.KeyChar = Chr(13) Then

e.Handled = True

SendKeys.Send("{TAB}")

End If

End Sub

End Class

‘ ----------------------------------------------------------------------------

Public Class frmUpdatePWD

Inherits System.Windows.Forms.Form

' 重载构造函数 主要是为了传递过来用户 ID 和密码两个属性

Public Sub New ( ByVal userid As Integer , ByVal password As String )

MyBase .New()

' 该调用是 Windows 窗体设计器所必需的。

InitializeComponent()

' 在 InitializeComponent() 调用之后添加任何初始化

Me .m_id = userid

<S

Published At
Categories with Web编程
Tagged with
comments powered by Disqus