|
ทำ Form Login บน Windows Form Application ง่าย ๆ ด้วย VB.NET และ C# |
Login Form บน Windows Form Application (.NET) บทความ.NET สอนการสร้าง Login Form บน Windows Form แบบง่าย ๆ มีตัวอย่างทั้ง VB.NET และ C# เห็นถามกันมาบ่อย ๆ ในกระทู้ วันนี้มีโอากาสเลยจัดให้ซะหน่อย คงจะไม่ช้าเกินไป สำหรับบทความนี้ และคิดว่าคงจะมีประโยชน์ เพราะวิธีการทำมันง่าย ๆ ไม่มีอะไรซับซ้อน
ตัวอย่างนี้มีทั้งภาษา VB.NET และ C#

ความสามารถของ Script
- Form Login ตรวจสอบ Username และ Password
- Form Main แสดงข้อมูลผู้ Login
ฐานข้อมูล Databaset
ในตัวอย่างนี้ใช้ฐานข้อมูล Access Database ถ้าต้องการใช้กับฐานข้อมูลอื่น ๆ อ่านได้ในส่วนของท้ายบทความ

เริ่นต้นด้วยการสร้างโปรเจคบน Visual Studio เลือกเป็น Windows Forms Application
โครงสร้างตาราง

สร้างตารางชื่อ member

ข้อมูลของสมาชิกมี Username และ Password
โครงสร้างไฟล์

- database.mdb (เป็นฐานข้อมูล)
- frmLogin.vb หรือ frmLogin.cs เป็น Screen Login
- frmMenu.vb หรือ frmMenu.cs เป็น Sscreen Main หลังจาก Login แล้ว
frmMenu.vb หรือ frmMenu.vb

frmMenu.vb หรือ frmMenu.cs

Code สำหรับภาษา VB.NET
frmLogin.vb
Imports System.Data.OleDb
Imports System.Data
Public Class frmLogin
Private Sub btnLogin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLogin.Click
Dim objConn As New OleDbConnection
Dim objCmd As New OleDbCommand
Dim strConnString, strSQL As String
Dim directory As String = My.Application.Info.DirectoryPath
strConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & directory & "\database.mdb;Jet OLEDB:Database Password=;"
objConn.ConnectionString = strConnString
objConn.Open()
Dim intNumRows As Integer
strSQL = "SELECT COUNT(*) FROM member WHERE Username = '" & Me.txtUsername.Text & "' AND [Password] = '" & Me.txtPassword.Text & "' "
objCmd = New OleDbCommand(strSQL, objConn)
intNumRows = objCmd.ExecuteScalar()
If intNumRows > 0 Then
Dim frm As New frmMain
frm._strUser = Me.txtUsername.Text
frm.LoadInfor()
frm.Show()
Me.Hide()
Else
MessageBox.Show("Username or Password Incorrect")
End If
objConn.Close()
objConn = Nothing
End Sub
Private Sub btnClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClose.Click
If MessageBox.Show("Exit application?", "", MessageBoxButtons.YesNo) = DialogResult.Yes Then
Application.Exit()
End If
End Sub
End Class
frmMenu.vb
Imports System.Data.OleDb
Imports System.Data
Public Class frmMain
Dim strUser As String
Public Property _strUser() As String
Get
Return strUser
End Get
Set(ByVal value As String)
strUser = value
End Set
End Property
Public Sub LoadInfor()
Dim objConn As New OleDbConnection
Dim objCmd As New OleDbCommand
Dim dtAdapter As OleDbDataAdapter
Dim dt As New DataTable
Dim strConnString, strSQL As String
Dim directory As String = My.Application.Info.DirectoryPath
strConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & directory & "\database.mdb;Jet OLEDB:Database Password=;"
objConn.ConnectionString = strConnString
objConn.Open()
strSQL = "SELECT * FROM member WHERE Username = '" & strUser & "' "
dtAdapter = New OleDbDataAdapter(strSQL, objConn)
dtAdapter.Fill(dt)
If dt.Rows.Count > 0 Then
Me.lblUser.Text = strUser
Me.lblName.Text = dt.Rows(0)("Name")
Me.lblEmail.Text = dt.Rows(0)("Email")
End If
objConn.Close()
objConn = Nothing
End Sub
Private Sub btnBack_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnBack.Click
Dim frm As New frmLogin
frm.Show()
Me.Hide()
End Sub
End Class
Code สำหรับภาษา C#
frmLogin.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
using System.IO;
namespace LoginFormCS
{
public partial class frmLogin : Form
{
public frmLogin()
{
InitializeComponent();
}
private void btnLogin_Click(object sender, EventArgs e)
{
OleDbConnection objConn = new OleDbConnection();
OleDbCommand objCmd = new OleDbCommand();
string strConnString = null;
string strSQL = null;
string directory = Path.GetDirectoryName(Application.ExecutablePath);
strConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + directory + "\\database.mdb;Jet OLEDB:Database Password=;";
objConn.ConnectionString = strConnString;
objConn.Open();
int intNumRows = 0;
strSQL = "SELECT COUNT(*) FROM member WHERE Username = '" + this.txtUsername.Text + "' AND [Password] = '" + this.txtPassword.Text + "' ";
objCmd = new OleDbCommand(strSQL, objConn);
intNumRows = Convert.ToInt32(objCmd.ExecuteScalar());
if (intNumRows > 0)
{
frmMain frm = new frmMain();
frm._strUser = this.txtUsername.Text;
frm.LoadInfor();
frm.Show();
this.Hide();
}
else
{
MessageBox.Show("Username or Password Incorrect");
}
objConn.Close();
objConn = null;
}
private void btnClose_Click(object sender, EventArgs e)
{
if (MessageBox.Show("Exit application?", "", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
Application.Exit();
}
}
}
}
frmMenu.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;
using System.IO;
namespace LoginFormCS
{
public partial class frmMain : Form
{
public frmMain()
{
InitializeComponent();
}
string strUser;
public string _strUser
{
get { return strUser; }
set { strUser = value; }
}
public void LoadInfor()
{
OleDbConnection objConn = new OleDbConnection();
OleDbCommand objCmd = new OleDbCommand();
OleDbDataAdapter dtAdapter = default(OleDbDataAdapter);
DataTable dt = new DataTable();
string strConnString = null;
string strSQL = null;
string directory = Path.GetDirectoryName(Application.ExecutablePath);
strConnString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + directory + "\\database.mdb;Jet OLEDB:Database Password=;";
objConn.ConnectionString = strConnString;
objConn.Open();
strSQL = "SELECT * FROM member WHERE Username = '" + strUser + "' ";
dtAdapter = new OleDbDataAdapter(strSQL, objConn);
dtAdapter.Fill(dt);
if (dt.Rows.Count > 0)
{
this.lblUser.Text = strUser;
this.lblName.Text = dt.Rows[0]["Name"].ToString();
this.lblEmail.Text = dt.Rows[0]["Email"].ToString();
}
objConn.Close();
objConn = null;
}
private void btnBack_Click(object sender, EventArgs e)
{
frmLogin frm = new frmLogin();
frm.Show();
this.Hide();
}
}
}
Screenshot

หน้าจอ Login

หน้าจอเมื่อ Login ผิดพลาด

หน้าจอเมื่อ Login ถูกต้อง จะแสดงข้อมูลที่ที่ได้ทำการ Login เข้ามาในระบบ
หรือจะ Download Code ไปศึกษา
Download here!!
ใช้ร่วมกับ Database อื่น ๆ
กรณีที่ต้องการใช้กับ Database อื่น ๆ เช่น MySQL, SQL Server , Oracle , Odbc หรืออื่น ๆ ก็สามารถทำได้โดยไม่ยากเช่นเดียวกัน โดยสามารถศึกษาการใช้งาน ADO.NET กับ Database อื่น ๆ ได้ที่
- MySQL Database MySql.Data.MySqlClient
- Oracle Database System.Data.OracleClient
- SQL Server System.Data.SqlClient
- Odbc System.Data.Odbc
- OleDb System.Data.OleDb
ตัวอย่างการดัดแปลงใช้กับ SQL Server
Imports System.Data.SqlClient
Imports System.Data
Public Class frmLogin
Private Sub btnLogin_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnLogin.Click
Dim objConn As New SqlConnection
Dim objCmd As New SqlCommand
Dim strConnString, strSQL As String
strConnString = "Server=IP/Server;UID=sa;PASSWORD=;Database=database;Max Pool Size=400;Connect Timeout=600;"
objConn.ConnectionString = strConnString
objConn.Open()
Dim intNumRows As Integer
strSQL = "SELECT COUNT(*) FROM member WHERE Username = '" & Me.txtUsername.Text & "' AND [Password] = '" & Me.txtPassword.Text & "' "
objCmd = New SqlCommand(strSQL, objConn)
intNumRows = objCmd.ExecuteScalar()
If intNumRows > 0 Then
Dim frm As New frmMain
frm._strUser = Me.txtUsername.Text
frm.LoadInfor()
frm.Show()
Me.Hide()
Else
MessageBox.Show("Username or Password Incorrect")
End If
objConn.Close()
objConn = Nothing
End Sub
Private Sub btnClose_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnClose.Click
If MessageBox.Show("Exit application?", "", MessageBoxButtons.YesNo) = DialogResult.Yes Then
Application.Exit()
End If
End Sub
End Class
คำอธิบาย
จะเห็นว่ามีการเปลี่ยนแปลงไม่กี่จุด เช่น
Imports System.Data.OleDb
เป็น
Imports System.Data.SqlClient
และพวก Class ต่าง ๆ ที่เป็น OleDb ให้เปลี่ยนเป็น Sql
OleDbConnection
เป็น
SqlConnection
และก็ ConnectionString ของ Database แต่ล่ะตัว
เพิ่มเติม
ตัวอย่างนี้เขียนบน Visual Studio 2008 (.NET 3.x) แต่สามารถนำไปใช้กับ .NET ทุกเวอร์ชั่นครับ
บทความอื่น ๆ ที่เกี่ยวข้อง
Go to : .NET Windows Form Application เขียนโปรแกรมบน Windows Form Application ด้วย .NET Framework
Go to : VB.NET/C# MySQL (ADO.NET) พื้นฐานการ เขียนโปรแกรม ADO.NET เชื่อมต่อกับฐานข้อมูล MySQL
Go to : VB.NET/C# Connect to SQL Server Using ADO.NET พื้นฐานกับ SQL Server and ADO.NET
Go to : ADO.NET and Oracle (VB.NET/C#) เขียนโปรแกรมติดต่อกับฐานข้อมูล Oracle Database
|
|
|
|
 |
|
|
|
By : |
TC Admin
|
|
Article : |
บทความเป็นการเขียนโดยสมาชิก หากมีปัญหาเรื่องลิขสิทธิ์ กรุณาแจ้งให้ทาง webmaster ทราบด้วยครับ |
|
Score Rating : |
   |
|
Create Date : |
2012-02-27 |
|
Download : |
No files |
|
|
|
|