C#編寫的登入介面
阿新 • • 發佈:2018-11-19
常用的C#小功能集錦
-
動態獲取系統當前時間**
- 使用DateTime結構的Now靜態屬性返回當前系統時間
DateTime P_dt = DateTime.Now;
string P_str_dt = P_dt.Tostring( ); -
根據兩個時間自動計算二個時間的差**
- 通過呼叫DateAndTime類的DateDiff靜態方法來計算兩
個日期的差從而得到工齡。
DateDiff(DateInterval Internal, DateTime Date1, DateTime Date2, FirstDay of Week Day of Week, FirsWeek of Year Week of Year);
引數 | 描述 |
---|---|
Internal | DateInterval列舉值,指定Date1與Date2時間間隔天數 |
Date1 | 計算中使用的第一個時間 |
Date2 | 計算中使用的第二個時間 |
DayofWeek | 用於指定一週的第一天,預設時FirstDayofWeek.Sundy |
Week of Year | 用於指定一年的第一週,預設時FirstWeek of Year.Jan1 |
具體用法:由於DateDiff時VB中的方法,所以要先新增VB程式集的引用。在新增引用選單欄下新增 Microsoft.VisualBasic程式集的引用,同時在程式碼中新增名稱空間的引用“Using Microsoft.VisualBasic;”
示例程式碼
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 Microsoft.VisualBasic; namespace 獲取系統時間測試 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { MessageBox.Show("間隔" + DateAndTime.DateDiff(DateInterval.Day, dtPicker1.Value, dtPicker2.Value, FirstDayOfWeek.Sunday, FirstWeekOfYear.Jan1).ToString() + "天", "間隔時間"); } } }
使用TimeSpan物件獲取時間間隔**
- 使用TimeSpan物件可以方便的獲取兩個時間間隔。兩個時間資訊相減會得到一個TimeSpan物件,通過TimeSpan物件的Day、Hours、Minutes、Seconds、Milliseconds屬性分別得到時間的天、時、分、秒、毫秒數。
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;
namespace 獲取系統時間測試
{
public partial class GetTime_Form : Form
{
public GetTime_Form()
{
InitializeComponent();
}
private DateTime G_DateTime_First, G_DateTime_Second; //定義了兩個時間欄位
private void btnTime1_Click(object sender, EventArgs e)
{
G_DateTime_First = DateTime.Now;
txtDateTime1.Text = G_DateTime_First.ToString("year年M月d日H時m分s秒fff毫秒");
}
private void btnTime2_Click(object sender, EventArgs e)
{
G_DateTime_Second = DateTime.Now;
txtDateTime2.Text = G_DateTime_Second.ToString("year年M月d日H時m分s秒fff毫秒");
}
private void btnTim3_Click(object sender, EventArgs e)
{
TimeSpan P_timespan_temp =
G_DateTime_First > G_DateTime_Second ?
G_DateTime_First - G_DateTime_Second :
G_DateTime_Second - G_DateTime_First;
txtResut.Text = string.Format(
"時間的間隔:{0}天{1}時{2}分{3}秒{4}毫秒",
P_timespan_temp.Days, P_timespan_temp.Hours,
P_timespan_temp.Minutes,P_timespan_temp.Seconds,
P_timespan_temp.Milliseconds);
}
}
}
常用數字驗證技巧
使用正則表示式驗證電話號碼
本例子用到了Regex類的IsMatch方法。Regex類的IsMatch方法用於指示正則表示式使用Pattern引數中指定的正則表示式是否在輸入字串中找到匹配項,格式如下:
**public static bool IsMatch(string input,string pattern)**
引數說明
引數 | 說明 |
---|---|
input | 字串物件,表示要搜尋匹配項的字串 |
pattern | 字串物件,表示要匹配的正則表示式模式 |
bool | 返回布林量,如果正則表示式找到匹配項,則返回True,否則返回False |
在驗證電話號碼時用到了正則表示式:
@"^(\d{3,4}-)?\d{6,8}$"
引數 | 描述 |
---|---|
^ | 正則表示式中匹配位置的元字元,用於匹配行首 |
$ | 正則表示式中匹配位置的元字元,用於匹配行尾 |
- | 前後的連線符 |
{3,4 } | 匹配的類容格式為3到4位數 |
{6,8 } | 匹配的類容格式為6到8位數 |
先建立一個Telephone類,在Telephone類中定義IsTelephone方法。當要使用驗證電話號碼時呼叫IsTelephone這個方法即可。
public class Telephone
{
public bool IsTelephone(string str_telephone)
{
return System.Text.RegularExpressions.Regex.IsMatch(str_telephone, @"^(\d{3,4}-)?\d{6,8}$");
}
}
以下示例程式碼就是在Form裡呼叫Telephone類中的IsTelephone方法去驗證電話號碼格式的。
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;
namespace 獲取系統時間測試
{
public partial class IsTelephoneForm : Form
{
public IsTelephoneForm()
{
InitializeComponent();
}
private void btnSearch_Click(object sender, EventArgs e)
{
string str = textBox1.Text;
Telephone tel = new Telephone(); //給Telephone類例項化一個物件
bool T = tel.IsTelephone(str); //在Telephone類中呼叫IsTelephone方法
if (T == true)
{
MessageBox.Show("輸入的格式正確!");
}
else
{
MessageBox.Show("輸入的電話格式不對!");
}
}
}
}
使用正則表示式驗證輸入密碼的條件
使用方法與電話號碼類似,也是要先建立一個Regex類的IsMatch方法。
public bool IsPassword(string str_password)
{
return System.Text.RegularExpressions.Regex.IsMatch(str_password, @"^[A-Za-z]+[0-9]");
}
在驗證輸入密碼的條件時用到了正則表示式:
@"[A-Za-z] + [0,9]"
引數 | 描述 |
---|---|
[A-Za-z] | 匹配大小寫字母 |
[0,9] } | 匹配數字 |
+ | 匹配一個到多個大小寫字母 |
使用正則表示式驗證郵政編碼
使用方法與電話號碼類似,也是要先建立一個Regex類的IsMatch方法。
public bool IsPostacode(string str_postacode) //使用正則表示式驗證郵政編碼的方法
{
return System.Text.RegularExpressions.Regex.IsMatch(str_postacode, @"^(\d{6}$");
}
使用正則表示式驗證郵政編碼時用到了正則表示式:
@"^\d{6}$"
引數 | 描述 |
---|---|
^] | 匹配行開始 |
$ } | 匹配行結束 |
\d | 匹配數字 |
{6} | 輸入的數字為6位 |
系統登入示例
#region
private void btnLogin_Click(object sender, EventArgs e)
{
string strName = txtUserId.Text;
string strPwd = txtPwd.Text;
if (string.IsNullOrEmpty(strName))
{
MessageBox.Show("使用者名稱不能為空", "提示",MessageBoxButtons.OK,
MessageBoxIcon.Information);
txtUserId.Focus();
return;
}
if (string.IsNullOrEmpty(strPwd))
{
MessageBox.Show("密碼不能為空", "提示", MessageBoxButtons.OK,
MessageBoxIcon.Information);
txtPwd.Focus();
return;
}
string ConnctionAddreas = "Data Source =.;Initial Catalog=WareHouseManagementSystem;Integrated Security=True";
string user_id = txtUserId.Text.Trim(); //獲取ID
string user_pwd = txtPwd.Text.Trim(); //獲取密碼
using (SqlConnection conn = new SqlConnection(ConnctionAddreas))
{
conn.Open();
string sql = "select userPwd from Users where [userId] ='" + user_id + "'and [userPwd] = '" + user_pwd + "'";
SqlCommand cmd = new SqlCommand(sql, conn);
SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
MessageBox.Show("歡迎登入酒店管理系統!");
this.Hide();
MainForm frm = new MainForm();
frm.Show();
}
else
{
MessageBox.Show("密碼或使用者名稱錯誤", "提示", MessageBoxButtons.OK,
MessageBoxIcon.Information);
txtUserId.Clear();
txtPwd.Clear();
txtUserId.Focus();
}
}
}
private void LoginForm_FormClosing(object sender, FormClosingEventArgs e)
{
if (MessageBox.Show("將要關閉視窗", "提示", MessageBoxButtons.YesNo) == DialogResult.Yes)
{
e.Cancel = false;
}
else
{
e.Cancel = true;
}
}
private void btnExit_Click_1(object sender, EventArgs e)
{
Application.Exit();
}
}
}
#endregion