1. 程式人生 > >C#編寫的登入介面

C#編寫的登入介面

常用的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