日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > C# >内容正文

C#

c#桌面应用程序开发--登陆窗口

發布時間:2024/8/24 C# 42 如意码农
生活随笔 收集整理的這篇文章主要介紹了 c#桌面应用程序开发--登陆窗口 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一.顯示登陸窗口

  應用程序入口點為Main方法,因此在Main方法中創建登陸窗體。

    1)創建登陸窗體(登陸窗體UI已提前創建好);

    2)顯示窗體,以模式對話框的形式顯示,并賦值給result;

    3)判斷窗體的返回值是否為OK,若是,則顯示主窗體,(窗體的對話框結果在相應的窗體中設置,已達到邏輯處理,登陸驗證的效果),否則退出程序;

  具體代碼如下:


二.登陸窗體數據訪問方法的編寫

  1.準備:

    1)數據訪問層DAL創建:解決方案→新建項目→類庫;

    2)在DAL中創建管理員數據訪問類SysAdminService: DAL→右鍵→類

    3)編寫通用數據訪問類:負責連接數據庫(最基本的格式化SQL語句通用數據訪問類),代碼如下

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using System.Data.SqlClient;
using System.Configuration; namespace DAL
{
/// <summary>
/// 通用數據訪問類
/// </summary>
class SQLHelper
{
private static string connString = Common.StringSecurity.DESDecrypt(ConfigurationManager.ConnectionStrings["connString"].ToString());//于數據庫連接的字符串(配置文件解密) /// <summary>
/// 執行增、刪、改操作
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static int Update(string sql)
{
SqlConnection conn = new SqlConnection(connString);
SqlCommand cmd = new SqlCommand(sql, conn);
try
{
conn.Open();
return cmd.ExecuteNonQuery();
}
catch (Exception ex)
{ throw ex;
}
finally
{
conn.Close();
}
} /// <summary>
/// 執行單一結果查詢
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static object GetSingleResult(string sql)
{
SqlConnection conn = new SqlConnection(connString);
SqlCommand cmd = new SqlCommand(sql, conn);
try
{
conn.Open();
return cmd.ExecuteScalar();
}
catch (Exception ex)
{ throw ex;
}
finally
{
conn.Close();
}
} /// <summary>
/// 返回結果集的查詢
/// </summary>
/// <param name="sql"></param>
/// <returns></returns>
public static SqlDataReader GetReader(string sql)
{
SqlConnection conn = new SqlConnection(connString);
SqlCommand cmd = new SqlCommand(sql, conn);
try
{
conn.Open();
return cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
catch (Exception ex)
{
conn.Close();
throw ex;
}
} }
}

  2.登陸窗體數據訪問方法編寫:

 using System.Data.SqlClient;
using Models; namespace DAL
{
/// <summary>
/// 管理員數據訪問類
/// </summary>
public class SysAdminService
{
/// <summary>
/// 根據賬號和密碼返回登陸結果的查詢,
/// </summary>
/// <param name="objAdmin"></param>
/// <returns>返回管理員對象,若為空,則表示賬號或密碼錯誤</returns>
public SysAdmin AdminLogin(SysAdmin objAdmin)
{
string sql = "select AdminName from Admins where LoginId={0} and LoginPwd={1}";
sql = string.Format(sql, objAdmin.LoginId, objAdmin.LoginPwd); SqlDataReader objReader = SQLHelper.GetReader(sql);
if (objReader.Read())//從數據庫查到結果,則表示登陸賬號和密碼正確,將管理員姓名封裝到對象中,并返回對象,以便以后修改賬號密碼使用
{
objAdmin.AdminName = objReader["AdminName"].ToString();
}
else objAdmin = null;//沒查到數據,表示登陸不成功,則清空對象
objReader.Close();
return objAdmin;
}
}
}

  3.前臺UI邏輯編寫(事件+控件)

 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 DAL;
using Models; namespace StudentManager
{
public partial class FrmUserLogin : Form
{
SysAdminService objAdminService = new SysAdminService(); public FrmUserLogin()
{
InitializeComponent();
} //登錄
private void btnLogin_Click(object sender, EventArgs e)
{
//[1]數據驗證
if (this.txtLoginId.Text.Trim().Length == )
{
this.lblMsg.Text = "請輸入登陸賬號!";
return;
}
if (this.txtLoginPwd.Text.Trim().Length == )
{
this.lblMsg.Text = "請輸入登陸密碼!";
return;
} //[2]封裝對象
SysAdmin objAdmin = new SysAdmin()
{
LoginId = Convert.ToInt32(this.txtLoginId.Text.Trim()),
LoginPwd = this.txtLoginPwd.Text.Trim()
};
//[3]和后臺交互,判斷登陸信息是否正確
try
{
objAdmin = objAdminService.AdminLogin(objAdmin);
if (objAdmin != null)
{
//保存登陸信息
Program.objCurrentAdmin = objAdmin;
this.DialogResult = DialogResult.OK;//this代表當前窗體
this.Close();
}
else
{
this.lblMsg.Text = "賬號或密碼錯誤!";
}
}
catch (Exception ex)
{ MessageBox.Show("數據訪問出現異常,登陸失敗!具體原因:"+ex.Message);
} }
//關閉
private void btnClose_Click(object sender, EventArgs e)
{
this.Close();
} #region 改善用戶體驗
private void txtLoginId_KeyDown(object sender, KeyEventArgs e)
{
        //按回車健代替鼠標單擊事件
if(e.KeyValue==)
{
if(this.txtLoginId.Text.Trim().Length != )
{
this.txtLoginPwd.Focus();
}
}
} private void txtLoginPwd_KeyDown(object sender, KeyEventArgs e)
{
if(e.KeyValue==)
{
btnLogin_Click(null,null);
}
} #endregion }
}

總結

以上是生活随笔為你收集整理的c#桌面应用程序开发--登陆窗口的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 色小说香蕉 | 一级淫片a | 涩涩网站在线观看 | www.色人阁.com | 91久久国语露脸精品国产高跟 | 色欲一区二区三区精品a片 在线观看黄网站 | 日韩在线视频免费播放 | 久久精品久久精品 | 在线观看日韩 | 高清一区二区三区四区五区 | 免费看日产一区二区三区 | 欧美影院| 91九色蝌蚪视频 | 黄色男女网站 | 手机在线看片 | 中文字幕乱码在线观看 | 天天爽夜夜爽夜夜爽精品 | 久久人人草 | 欧美午夜精品久久久久久浪潮 | 日韩午夜高清 | 午夜天堂 | 日日狠狠久久偷偷四色综合免费 | 国产无遮挡又黄又爽又色视频 | 91嫩草欧美久久久九九九 | 国产女18毛片多18精品 | 久章草影院 | 亚洲色图另类图片 | 可以免费看的黄色网址 | 日本一区视频 | 亚洲欧洲日本国产 | 精品视频成人 | 国产精品乱码一区二区视频 | 看了让人下面流水的视频 | 成人黄色电影网址 | 日本啪啪网站 | 亚洲欧美一区二区视频 | 亚洲天堂中文字幕在线观看 | 婷婷激情图片 | 青青草成人在线观看 | 亚洲精品乱码久久久久久蜜桃不卡 | 五月激情在线 | 日韩av免费在线看 | 精品在线视频一区二区三区 | 成人av电影免费观看 | 国产精品av在线播放 | 欧美日韩高清一区 | 久久一视频 | 中文久久久久 | 中文字幕不卡视频 | 伊人一区二区三区 | ww黄色 | 国产欧美日韩精品区一区二污污污 | av番号网 | 日本视频免费看 | 人妻内射一区二区在线视频 | 久久桃花网 | 葵司免费一区二区三区四区五区 | 国产亚洲欧美一区 | 男人av影院| 午夜一区二区三区 | 正在播放欧美 | 精品少妇爆乳无码av无码专区 | 一区二区三区视频在线观看 | 亚洲av毛片成人精品 | 日日日插插插 | 美女一区| 麻豆久久久午夜一区二区 | 熟女人妻在线视频 | 欧美性在线观看 | 黄色特级大片 | 久久五 | 91高跟黑色丝袜呻吟动态图 | 国产伊人一区 | 同性色老头性xxxx老头 | 国产精品久久一区二区三区动 | 国产精品久久久久久久久久小说 | 欧美做受高潮中文字幕 | 国产免费观看久久黄av片 | 天堂va蜜桃一区二区三区 | 在线免费视频观看 | 亚洲综合第一页 | 精品人妻大屁股白浆无码 | 国产精品成人一区二区网站软件 | 手机看片1024久久 | 黄色av大片 | 体内射精一区二区 | 国产精品一区二区三区免费视频 | ass亚洲肉体欣赏pics | 国产精品久久久久一区二区 | 欧美日韩在线视频一区 | 国产精品情侣自拍 | 国产精品福利视频 | 午夜秋霞影院 | 欧美一区二区三区在线观看 | 色就是色亚洲色图 | 亚洲综合在线五月 | 欧美黄色片 | 欧洲av网站| www.国产视频 |