.net窗體程序的基礎知識及詳細筆記


第一章:初識Windows程序

1.1:第一個wondows程序

1.1.1:認識windows程序

  Form1.cs:窗體文件:程序對窗體編寫的代碼一般都存放在這個文件(還有拖動控件時的操作和布局,還有設置一般的屬性)      F4:跳到設置屬性的界面  F7:跳到邏輯代碼文件

  From.Designer.cs:窗體設計文件:一般拖動控件自動生成的文件(很少修改)

  From.resx:資源文件:配置圖片等資源。

   Program.cs: 主程序文件:包含main方法的程序入口,如果要改執行的窗體直接run后面的文件名

Public  partial   class  Form1:Form

{

         //這個相當於partial是部分意思,,他繼承了Form文件的所有屬性和方法(:表示繼承)

}

 

屬性

說明

Name

窗體對象的名稱,用來在代碼中標識

BackColor

窗體的背景顏色

BackgroundImage

窗體的背景圖片

FormBorderStyle

窗體邊框的樣式

MaximinzeBox

窗體是否最大化

ShowIntaskBar

窗體是否出現Windows任務欄

StartPosition

窗體第一次出先的位置

Text

窗體標題欄顯示的文本

TopMost

Xz顯示在某個窗體之上

WindowState

窗體的初始化狀態  包括MaxMinzed(最大化) Minmized(最小化)

方法

說明

Close()

關閉窗體

Show()

顯示窗體

ShowDiaLog()

模式化窗體    (如果打開了,只有關閉了此窗體,其他窗體才能操作)

Hide()

隱藏窗體

 

1.1.3:基本控件

  標簽(label):用於顯示不能編輯的文本或圖像 ,常用來在窗體上的其他控件做標注或說明

屬性

說明

Image

在標簽上顯示的圖片

Text

在標簽上顯示的文本

 

  文本框(TextBox)用於獲得用戶輸入的信息和用戶顯示的文本

MaxLength

指定可以在文本框輸入的最大字符

Multiline

表示是否可以在文本框輸入多行文本

PasswordChar

輸入的字符可以用一個符號或者什么來替換(屬性值可以是*,輸入實際的就可以隱藏)

ReadOnly

指定是否可以編輯(只讀)

Text

與文本框關聯的文本

  組合框(ComboBox):先當於下拉框和文本框的結合體。可以輸入文本或進行選擇

Items

組合框的項

DropDownStyle

組合框的風格  一般(DropDownList)只能下拉

Text

與組合框關聯的文本

SelectedIndex

當前選中的索引(下標),從0開始 (返回int類型)

SelectedItem

獲取選中的項,返回object類型,返回選中項的值

事件

說明

Click

單擊事件

SelectedIndexChanged

選中項后發生的事件

  按鈕(button):用戶通過點擊來進行操作

Endable

返回bool類型的值,控件是否可用

Text

按鈕上顯示的文本值

TextAlign

按鈕上文本的對齊方式

事件

說明

Click

點擊事件

 

 

 

1.2:事件的處理

1.單擊要創建處理的控件(雙擊直接完成,然后跳轉,直接寫代碼)

2:在屬性找到事件的標志(閃電)

3:雙擊要處理的事件

4:編寫處理的邏輯代碼        (This:代表當前窗體)

1.3:增強窗體的友好性

1.3.1:Messagebox消息框(返回的是一個DiaLogresult類型的值)

  語法:MessageBox.Show(顯示的提示字符串,消息的標題,消息框的按鈕,消息框圖片)

例子:

 

  • ·DiaLogResult result=MessageBox.Show( “確定要退出嗎?”,”操作提示”,messageBoxButtons.YesNo,   MessageBoxIcon.Question  );

 

If(result==DialogResult.yes)

{

         This.Close();

}

 

1.3.3:窗體體的跳轉

語法:

按鈕下的事件

  先確定即將跳轉的窗體的名字:

FrmADminMain(跳轉的窗體) frmAmdin =new  FrmADminMain();    //創建一個窗體對象

 

FrmAmdin.Show();       //顯示此窗體

 

This.Hide();      //隱藏當前窗體

 

1.3.4:窗體間的數據傳遞

  在即將跳轉的(下一個)窗體申明一個空的字符串   String name=string.Empty

 

  在(本)窗體的 代碼

 FrmADminMain(跳轉的窗體) frmAmdin =new  FrmADminMain();    //創建一個窗體對象

 

 

frmAmdin.name=textuserName.text,trim();    //把這邊的文本的值傳遞給下一個窗體的name屬性

 

FrmAmdin.Show();       //顯示此窗體

 

This.Hide();      //隱藏當前窗體

   

第二章:構建良好的windows程序

2.1:使用菜單欄和工具欄

2.1.1:菜單欄的控件MenuStrip

屬性

說明

Name

代碼中菜單對象的名稱

Items

在菜單中顯示的集合

Text

與菜單相關的文本

 

  菜單項的主要屬性

屬性

說明

Name

代碼中菜單項的名稱

DropDownItems

在子菜單中顯示的項的集合

text

與菜單項相關的文本

事件

說明

Click

點擊事件

 

 

 

Application   Exit();    //退出程序方法

This.close()     //退出當前窗體方法

  分割線的做法:減號(-),回車

  快捷鍵:(&A-Z)    

2.1.3:使用工具欄控件ToolStrip

  工具欄的屬性

屬性

說明

ImageScalingsize

工具欄顯示圖片的大小

Items

工具欄的項的集合

 

 

  工具欄上面的按鈕和標簽的主要屬性和事件

  DisplayStyle

  圖像和文本的顯示方式,包括文本,圖片,和什么都不顯示

  Image

  按鈕或標簽的圖片

  Imagescaling

  是否調整按鈕或標簽上的圖片大小

  text

  顯示的文本

  TextImageRelation

  按鈕和圖片的顯示相對位置

  Click

  點擊事件

   

   

 

2.2:使用windows的基本控件

2.2.1:使用窗體的基本控件

  單選按鈕(radiobutton):選擇的項的集合

  Checked

  指示是否被選中(Radio.checked==true)表示已選中

  Text

  按鈕上的文本

  事件

   

  Click

  點擊事件

  分組框(GroupBox)和panel容器

GroupBox

Panel

用於邏輯上一組控件

為了易於操作,把多個控件放在一起

  日期控件(DataTimePicker):功選擇日期的控件

屬性

說明

Maxdate

取得的最大日期

Mindate

取得的最小日期

Value

日期的值(相當於Text)

Format

用於設置格式

 

2.2.2:排列窗體的控件

  Anchor:如果錨定了 ,各邊距就會不會改變(選中深灰),一直保持此距離,與某條邊

  Dock:停靠   在那一邊   (Fill是填充窗體的空余部分)

2.2.3:創建MDI應用程序

概念:同時打開多個窗體,但是不會打開多個程序    有一個父窗體,幾個子窗體

 

  步驟:

  在父窗體的IsMdiContaner設置為true,    表示他是一個父窗體了

  在(按鈕)跳轉的時候

FrmEdit   frm = new  FrmEdit();

 

frm.MdiParent=this;             //他的父窗體就是這個窗體

 

frm.show(); 

2.3:組合框comboBox控件

 

Count

獲得集合中的數目

DropDownStyle

設置組合框的樣式   一般:GropDownlist(只能下拉)

IsreadOnly

H獲取指定能夠修改集合的值

Item

集合中指定的索引項

Add()

向組合框添加項

Clear()

清除所有項

Remove()

 從組合框中移除指定項

 

 

 

例:CboGrade.items.Add(“一年級”);  //添加

 

CboGrade.selectedIndex=0;    //默認選擇第一項(坐標為0)

第三章:使用listview控件展示數據

 

3.1:圖像列表控件

3.1.1:圖像列表控件Imagelist

使用場景:為多個控件或則窗體提供的一部分圖片

  

屬性

說明

Images

儲存的所有圖片的復數

ImageSize

圖片的大小

transparentColor

被視為透視的顏色

ColorDepth

獲取圖片列表的顏色深度

3.2:列表視圖控件(listView控件)

說明:用於創建項windows資源管理器的用戶界面,有大圖標(LargeIcon)小圖標:(smallIcon)

列表(List)詳細信息(Detail)平鋪(Tile)

 

Columns

詳細信息中顯示的   列頭(上面)

FullRowselect

當選擇一項時,他的子項全部一起選中(一行)

Items

Listview的項的集合

MuiliSelect

是否允許選澤多項

Selected Intems

選中項的集合

View

指定listview的顯示模式

LargeimageList

綁定設置顯示大圖標時的圖片

SmallImageList

綁定設置顯示小圖標時的圖片

事件

說明

MouseDoubleClick

雙擊事件

方法

 

Clear()

清除listview項

 

 

 

 

設置大小圖表模式的代碼:大:this.lvcomputer.view=view.largeIcon

小:this.lvcomputer.view=view.smallIcon

 

3.3:contextMenuStrip控件

說名:快捷菜單:又叫上下文菜單

 

屬性

說明

DisPlayStyle

指定是否顯示圖片和文本

Image

顯示在菜單項的圖片

Text

顯示 在菜單項的文本

Click

單擊事件

 

 

向listView中添加數據

ListviewItms   Items=new listviewitems(new stirng[] { “主項(第一個項)”, “子項“, “子項”, },圖片的坐標(2)   );.   //添加圖片的坐標

第四章:實現windows程序的數據更新

4.1:枚舉

4.1.1:使用枚舉的好處:可以避免不合理的賦值

 

定義枚舉類型:訪問修飾符  enum  枚舉名{ 值1,值2 }

1:枚舉的類

  例:public  enum  Genders

{

         男,女       //定義枚舉類

}

2:另一個類

Public  class  Student

{

         public   Genders   studentGender;   //定義枚舉屬性

 

         Pubicl  void  Show( “我的性別是:“+ studentGender );   //顯示方法

}

 

 

3:有main方法的類

 

Student   student=new Student();    //創建對象

 

Student.studentGender=Genders.男;

 

Stuent.Show();   //調用顯示方法

4.3:使用windows高級控件

4.3.1:圖片框控件(PictureBox)

  用於顯示一張圖片的控件

屬性

說明

Image

圖片框顯示的圖片

SizeMode

指定如何處理圖片的位置和大小

 

4.3.1:計時器(Timer)控件

 

可以控制每隔一定的事件觸發一次事情   事件(Tick事件)

 

屬性

說明

InterVal

事情觸發的頻率,一般以毫秒為單位

Endabled

是否啟用事件

事件

 

Tick

指每隔一段時間發生的事情

Start()

啟用計時器

Stop()

停止計時器

 

 

 

 

 

Int index=0;

例子:Tmrabout_Tick

{       

         If(index<this.ilimages.images.count-1)

{

         Index++;

}else

{

         Index=0;

}

         This.pbAbout(此圖片框控件).Image=this.ilimages.images[index];

}

 

 

 

模式窗體:FrmAbout,frmAbout=new FmAbout();

 

                   frmABout.ShowLog();

 

 

第五章:實現windows的數據綁定

5.1:DataSet對象

5.1.1:DataSet(數據集)對象

說明:相當於一個零時倉庫,吧程序要用的數據零時存放在數據集里面,。不需要與數據庫連接,可以直接在數據集里面讀取數據,也可以先對數據集的數據進行修改,然后提交到數據庫里面           (數據集獨立於任何數據庫,不會直接和數據庫打交道)

 

5.1.2:創建DataSet數據集

位置:位於System.Data包下面

 

語法:DataSet   dataset=new   DataSet();         //創建對象

 

5.2:DataAdapter(適配器):對象

(相當於貨車):

DataAdapter:屬性和方法

SelectCommand

從數據庫檢索Command對象

方法

說明

FILL()       填充數據集

向DataSet中的表填充數據

UPDate()    修改后提交到數據集

向DataSet中的數據提交數據庫

語法:

 

DataSet   dataset=new   DataSet();

 

sqlDataApater  對象  =new SqlDataApater  ( sql語句,數據庫連接的connection對象   );

 

 

調用dataAdapter的對象Fill方法填充數據到數據集。

語法:dataApter.Fill( 數據集對象(dataSet),“數據表的名稱(table)” );

 

整體步驟:

DataSet   dataset=new   DataSet();

 

String  str=“select   *  from   Student”;

 

SqlConnection   connection=new   sqlCOnnection( 連接的字符串 );

 

sqlDataApater  對象  =new SqlDataApater  ( sql語句,數據庫連接的connection對象   );

 

dataApter.Fill( 數據集對象(dataSet),“數據表的名稱(table)” );

 

綁定(網格視圖):this.dataGridView.DataSoure  = ds.tables[“table”];   //綁定是的是網格視圖

 

 

 

綁定(下拉框):this.cboGrade.DataSoure=ds.table[“table”];    //下拉框的數據源

This.CboGrade.ValueMember=”GradeId”;     //綁定隱藏的值(可能會做后續處理)

This.cboGrade.DispiayMember=”GradeName”;      / /綁定顯示出來的值(用戶選擇)

5.3:數據綁定

5.3.1:comboBox數據綁定

屬性

說明

DataSource

數據源

DisplayMember (選中顯示值,Cbo.Text==?)

獲取顯示在用戶界面的值

ValueMember  (選中隱藏值,(cbo.selectedValue==?))

隱藏的值(實際值),查找時可以做為條件,應為是主鍵

 

 

  綁定(下拉框(comboBox)):this.cboGrade.DataSoure=ds.table[“table”];    //下拉框的數據源

  This.CboGrade.ValueMember=”GradeId”;     //綁定隱藏的值(可能會做后續處理)

  This.cboGrade.DispiayMember=”GradeName”;      / /綁定顯示出來的值(用戶選擇)

 

插入一行新的:語法:

  :DataRow  row=ds.Tables[“Grade”].Newrow();    //創建一行新的

  row[“GradeId”]=-1;                           //第一列的值是編號: 為-1

  row[“GradeName”]=”全部”;                    //第二列的值是年級名稱:為全部

  ds. Tables [“Grade”].Rows.InsertAt(row,0);         //把這一行插入到數據集的Grade表的行中     第一行(坐標0)

 

5.4:DataGridView控件

概念:數據網格視圖控件:可以直接刪除,修改數據,如果要顯示那個表的數據,直接設置DataSource的屬性:表示數據源

 

屬性

說明

AutoGeneerrateColumns

設置DataGirdView是否自動創建列

Columns

列的集合(列頭集合),網格視圖的頭部

DataSource

DataGirdView的數據源

ReadOnly

是否只讀(可以編輯)

DataGirdView各列的屬性

 

ColumnType

列的類型

DataPropertyName

綁定數據列的名稱   (必須與數據庫的列名一樣)

HeaderText

列的標題文本(列頭)

Visible

指定列是否可見

FroZen

指定水平滾動,列是否可以移動

ReadOnly

指定單元格是否可讀

Selected

 

 

 

DataGirdView必用屬性:

 

AllowUsertoAddRows

(DataGirdView)可以取消掉默認展示出來的多余一行

AutoSizeColumnSMode       值為:Fill(填滿)

選擇是否自動調整列的寬度

ColHeaderVisvile

是否顯示列頭

Cloumns

列的集合

ContextMEnuStirp

綁定快捷菜單

MultiSelect           一般:false

是否可以多行選中

ReadyOnly

只讀

RowsHeaderVisible     一般:false

行頭是否可見

SelectionMode       一般:FullRowSelect:整行選中

如何選擇單元格

Visible

指定改控件是否可見

AutoGenerateColumns      

是否自動創建列    默認:true

 

 

 

 

 

 dgvStudentInfo.SelectedRows.count;

  當對網格視圖進行操作的時候,需要先判斷一下選中的行的個數是否大於0,才進行操作

 

對數據庫進行修改操作()

SqlCommandBuilder:只能操作一個表的內容

 

接着上面的操作,修改 ,    先直接雙擊修改表中的內容,然后保存(保存按鈕事件中的代碼如下:)

 

  SqlCommandBuilder  builder=new   SqlCommandBUilder(adapter);

 

  Adapter.Update(ds.”Student”);

 

 

 

  數據網格視圖(DataGirdView):的值獲取:一般是Value:應為只有網格才有單元格所以:當只能選擇一行的時候:         dgvStudent.selectedCells[0] .Value;   獲取第一個選擇的單元格的內容;

DgvStudent.selectedRows[0].Cells[0].Value;

 

 

 

  列表視圖(listView):獲取值一般:Text結尾:

listView.SelectedItems[0].Text;     //這個是獲取主項的值(第一個項的值)

 

listView.SelectedItems[0].SubItems[0].Text;  // 獲取第一個子項的值(也就是第二個,應為主項在第一個)

 

listView.SelectedItems[0].SubItems[1].Text;   // 獲取第二個子項的值(也就是第三個,應為主項在第一個)

 

第六章:數據的篩選和排序

6.1:TreeView控件

6.1.1:認識Treeview控件

概念:樹形控件(TreeView)用於以節點形式顯示文本和數據,這些節點按層次結構的順序排列。

 

 

Tree的屬性和事件

 

屬性

說明

Nodes

TreeView中的所有根節點

ImagesList

存放TreeView中節點的圖像

ImageIndex

節點默認的圖片索引

SelectedImagesIndex

節點選中的圖像的索引

SelectedNode

當前選中的父節點

事件

說明

AfterSelect

選中節點的事件

 

TreeNode(節點)的屬性和事件

Text

節點上的文字

ImageIndex

節點默認的圖像索引,不設置會與Tree一樣

SeletedImageIndex

節點選中的圖片索引

Level

節點的深度(從0開始)

Nodes

當前節點包含的子節點集合

ParentNode

當前節點的父節點

Tag

當前節點可以設置的隱藏值(可以用來做標記)當做條件判斷

SelectNode.parent.Text;

當前的父節點的文本

selecNode.Tag

得到選中節點設置的隱藏值

Select.Text

選中的節點的文本

 

Splitcontainer

拆分器(把一個窗體拆開)

 

6.2:Dataview

6.2.1:認識DataView

DataView:為我們提供了動態視圖,並對動態生成的視圖進行排序,篩選,它的主要任務就是運行Windows控件的進行數據綁定。

 

DataView,DataSet,DataTable:關系

l  一個DataSet中可以有多個DataTable,一個DataTable可以生成多個DataView視圖

 

l  創建DataView對象語法:

 

DataView 數據視圖名=new DataView(DataTable對象)

 

DataView  dataview=new DataView(dataset.Tables[“Student”])

 

DataView的常用屬性

Table

用於獲取設置源的DataTable

Sort

把DataView生成的數據排序(dv.sort=””;)(相當於Oder  by)

RowFilter

獲取或設置篩選條件(相當於Where)

 

只不過要先創建dv.RowFilter=stirng.format(“  ”,num);

Count

在應用RowFilter后,獲取DataView的行數

 

 

最后別忘記了綁定數據源:dgvStudentInfo.DataSource=dv;

 

(就是這個數據網格視圖的數據源就是用數據表創建的這個數據視圖)

 

6.3:在DataGridView中實現刪除操作

 

步驟:

 

1:先判斷一下選中的行數是否大於0:DgvStudentInfo.SelectedRows.COUNT>0;

 

 

2:先獲取選中的行的主鍵列的值(唯一的):SelectedRows[0].Cells[“StudentNo”].values;

 

 

3:編寫Sql語句實現刪除操作  注意:(如果有多表關聯,先刪子表,再刪主表,而且兩個sql語句可以寫在一起,先刪除的在前面,中間用分好隔開 )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

DataGirdView必用屬性:

 

AllowUsertoAddRows

(DataGirdView)可以取消掉默認展示出來的多余一行

AutoSizeColumnSMode       值為:Fill(填滿)

選擇是否自動調整列的寬度

ColHeaderVisvile

是否顯示列頭

Cloumns

列的集合

ContextMEnuStirp

綁定快捷菜單

MultiSelect           一般:false

是否可以多行選中

ReadyOnly

只讀

RowsHeaderVisible     一般:false

行頭是否可見

SelectionMode       一般:FullRowSelect:整行選中

如何選擇單元格

Visible

指定改控件是否可見

AutoGenerateColumns      

是否自動創建列    默認:true

 

 

 

 

//    考點

 

 

String connStr = "Data Source=.;Initial Catalog=MySchool;User ID=sa;Password=sa";

        public void BindTeacherInfo()

        {

            this.dgvTeacherInfo.AutoGenerateColumns = false;    //不自動添加列

            this.dgvTeacherInfo.Columns["colGradeId"].Visible = false;  //隱藏列

            //0.准備sql語句

            StringBuilder sb = new StringBuilder();

            sb.Append(" select id,name,age,teachYear,g.gradeId,gradeName from Teacher as T ");

            sb.Append(" inner join Grade as G ");

            sb.Append(" on G.GradeId=T.gradeId");

            //1.獲得連接對象

            SqlConnection conn = new SqlConnection(connStr);

           

            //2.創建數據適配器

            SqlDataAdapter adapter = new SqlDataAdapter(sb.ToString(),conn);

            //adapter.SelectCommand = new SqlCommand(sql,conn);

           

            //3.創建數據集

            DataSet ds = new DataSet();

 

            //4.填充數據

            if(ds.Tables["Teacher"]!=null){

                ds.Tables["Teacher"].Clear();

            }

            adapter.Fill(ds,"Teacher");

 

            //5.綁定數據源

            this.dgvTeacherInfo.DataSource = ds.Tables["Teacher"].DefaultView;

 

        }


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM