.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;

 

        }

posted @ 2017-09-26 19:22  超爷95  阅读(2309)  评论(0编辑  收藏  举报