1、設(shè)置窗體的屬性
Name: 給窗體起一個(gè)名字(每一個(gè)窗體都是一個(gè)對(duì)象)
FormBorderStyle: 設(shè)置框體的邊框樣式? 6個(gè)值
None:? 去掉邊框
FixedSingle: 不允許拖動(dòng)邊框
SizeAble:? 默認(rèn)值
Text: 設(shè)置窗體的標(biāo)題
ICon:? 設(shè)置窗體及任務(wù)欄顯示的圖標(biāo)
BackgroundImage:? 設(shè)置窗體背景圖片
BackColor:? 設(shè)置窗體背景顏色
StartPosition:? 設(shè)置窗體默認(rèn)顯示位置
CenterScreen:? 居中顯示
CenterParent: 在父窗體中間顯示
WindowState:? 設(shè)置打開時(shí)最大化、最小化、正常
Maximized:最大化
MInimized: :最小化
Normal: 正常窗體大小
2、常用的控件
在工具箱里面找---視圖--工具箱
1、Label:文本標(biāo)簽 顯示文字? 設(shè)置Text屬性值
2、TextBox:? 文本框
3、ComboBox:組合框(下拉框)
設(shè)置下拉列表直接添加項(xiàng),一個(gè)項(xiàng)單獨(dú)一行
4、Button: 按鈕? 設(shè)置顯示文字設(shè)置Text
3、取控件的值
空間名.Text
string? name=? txt_user.Text;
4、事件
窗體的載入事件
load事件:直接雙擊窗體進(jìn)入的事件就是載入事件
click: 單擊事件
5、消息框:
1、? MessageBox.Show(提示語句);
2、? MessageBox.Show(提示語句,標(biāo)題);
3、? MessageBox.Show(提示語句,標(biāo)題,按鈕);
4、? MessageBox.Show(提示語句,標(biāo)題,按鈕,圖標(biāo));
6、消息框的返回值
返回值是 DialogResult 類型
判斷的時(shí)候也需要用到枚舉去判斷
DialogResult? res= MessageBox.Show("帳號(hào)密碼不能為空","警告",
MessageBoxButtons.OKCancel,MessageBoxIcon.Warning);
if (res==DialogResult.OK)
{
txt_name.Focus();//? 獲得焦點(diǎn)
}
7、窗體間的傳值
A窗體傳值傳到B窗體
1、在B窗體添加一個(gè)public修飾的字段name
2、在A窗體創(chuàng)建B窗體對(duì)象后給B窗體的這個(gè)字段賦值
B? b=new B();
b.name="張三";
b.Show();
8、 使用數(shù)據(jù)庫(kù)連接工具類和 業(yè)務(wù)分離,提高程序可維護(hù)性
1、新建一個(gè)數(shù)據(jù)庫(kù)連接工具類 ConnectionUtil
1.1? 先寫數(shù)據(jù)庫(kù)連接字符串
string constr = @"Data Source=.;Initial Catalog=MySchool;User ID=root;pwd=root";
1.2? 定義一個(gè)SqlConnection類型的字段? ? _conn
1.3? 封裝這個(gè)字段 去掉set(不需要從外面賦值)
1.4? 在get里面做判斷,如果_conn字段是空值(也就是沒有創(chuàng)建這個(gè)對(duì)象)
public SqlConnection Conn
{
get {
if (_conn==null)
{
_conn = new SqlConnection(constr);
}
return _conn;
}
注意點(diǎn):
在屬性里面出現(xiàn)的對(duì)象都是小寫的字段,如果使用大寫的屬性,會(huì)出現(xiàn)無限遞歸調(diào)用,
導(dǎo)致內(nèi)存溢出
1.5 自定義一個(gè)數(shù)據(jù)庫(kù)連接對(duì)象打開的方法
(如果直接使用連接對(duì)象.Open(),一旦數(shù)據(jù)庫(kù)連接對(duì)象沒有關(guān)閉時(shí)再次調(diào)用Open()會(huì)報(bào)異常)
1.5.1
public void OpenConn()
{
//ConnectionState? 枚舉類型,指的是數(shù)據(jù)庫(kù)連接對(duì)象的當(dāng)前狀態(tài),需要引入命名空間
// Closed:關(guān)閉? OPen:打開? Broken:阻塞狀態(tài)
if (Conn.State == ConnectionState.Closed)
{
Conn.Open();
}
else if (Conn.State == ConnectionState.Broken)
{
//? 如果是阻塞狀態(tài)? 需要先關(guān)閉 再打開
Conn.Close();
Conn.Open();
}
}
注意點(diǎn): 打開或關(guān)閉方法里面使用的數(shù)據(jù)庫(kù)連接對(duì)象都是用屬性而不用字段
1.6 自定義關(guān)閉數(shù)據(jù)庫(kù)連接對(duì)象的方法
public void CloseConn()
{
//ConnectionState.Closed 指的是數(shù)據(jù)庫(kù)連接對(duì)象的當(dāng)前狀態(tài)
// closed:關(guān)閉? OPen:打開? Broken:阻塞狀態(tài)
if (Conn.State == ConnectionState.Open || Conn.State == ConnectionState.Broken)
{
Conn.Close();
}
}
工具類的用處:
以后需要使用連接對(duì)象時(shí),只需要?jiǎng)?chuàng)建工具類的對(duì)象
通過對(duì)象.Conn屬性獲得連接對(duì)象
通過對(duì)象.OpenConn()? 打開數(shù)據(jù)庫(kù)連接對(duì)象
通過對(duì)象.CLoseConn()? 關(guān)閉數(shù)據(jù)庫(kù)連接對(duì)象
9、創(chuàng)建數(shù)據(jù)庫(kù)操作類--提供給業(yè)務(wù)邏輯類處理數(shù)據(jù)庫(kù)數(shù)據(jù)的一些方法
對(duì)數(shù)據(jù)庫(kù)的增刪改查的方法
9.1? 定義一個(gè)數(shù)據(jù)庫(kù)連接工具類對(duì)象(對(duì)象.Conn獲取連接對(duì)象)
ConnectionUtil? connUtil=new ConnectionUtil();
自定義方法? ---查詢的方法
public? ? SqlDataReader? GetStudentByNo(string sql)
{
//? 1、獲得數(shù)據(jù)庫(kù)連接對(duì)象
SqlConnection? sqlConn=? ? connUtil.Conn;
//? 2、打開數(shù)據(jù)庫(kù)連接
connUtil.OpenConn();
//? 3、創(chuàng)建Command對(duì)象
SqlCommand? mand=new SqlCommand(sql,sqlConn)
//? 4、執(zhí)行操作? SqlCommand調(diào)用對(duì)應(yīng)的執(zhí)行方法
SqlDataReader? reader= mand.ExecuteReader()? //? 查詢多行時(shí)使用
return reader;
}
//? ? 統(tǒng)計(jì)學(xué)生總?cè)藬?shù)的方法
public? ? int? CountStudent(string sql)
{
//? 1、獲得數(shù)據(jù)庫(kù)連接對(duì)象
SqlConnection? sqlConn=? ? connUtil.Conn;
//? 2、打開數(shù)據(jù)庫(kù)連接
connUtil.OpenConn();
//? 3、創(chuàng)建Command對(duì)象
SqlCommand? mand=new SqlCommand(sql,sqlConn)
//? 4、執(zhí)行操作? SqlCommand調(diào)用對(duì)應(yīng)的執(zhí)行方法
int? count=(int) mand.ExecuteScalar()? //? 查詢單個(gè)值時(shí)使用
// ? 5、關(guān)閉數(shù)據(jù)庫(kù)連接對(duì)象
connUtil.CloseConn()
return count;
}
//? 執(zhí)行增刪改通用的方法
public? ? int? CountStudent(string sql)
{
//? 1、獲得數(shù)據(jù)庫(kù)連接對(duì)象
SqlConnection? sqlConn=? ? connUtil.Conn;
//? 2、打開數(shù)據(jù)庫(kù)連接
connUtil.OpenConn();
// 3、創(chuàng)建Command對(duì)象
SqlCommand? mand=new SqlCommand(sql,sqlConn)
// 4、執(zhí)行操作? SqlCommand調(diào)用對(duì)應(yīng)的執(zhí)行方法
int? count= mand.ExecuteNonQuery()//? 增刪改時(shí)調(diào)用? 返回受影響(執(zhí)行成功)的行數(shù)
// 5、關(guān)閉數(shù)據(jù)庫(kù)連接對(duì)象
connUtil.CloseConn()
return count;
}