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

}

时间: 2024-10-14 09:34:22

.net窗体程序的基础知识及详细笔记的相关文章

sql sever 基础知识及详细笔记

第六章:程序数据集散地:数据库 6.1:当今最常用的数据库 sql  server:是微软公司的产品 oracle:是甲骨文公司的产品 DB2:数据核心又称DB2通用服务器 Mysql:是一种开发源代码的关系型数据库管理系统 6.2:数据库的基本概念 6.2.1:实体和记录 实体:就是客观存在的事物 记录:每一行对应的实体,在数据库中,通常叫做记录 6.2.2:数据库和数据库表 数据表:不同类型组织在一起,形成了数据库表,也可以说表示实体的集合,用来存储数据. 数据库:并不是简单地存储这些实体的

java基础知识及详细笔记

第一章:初识java 1.1.java的概述 ü  什么是计算机程序:计算机按照某种顺序而完成的一系列有序指令的集合. ü  Java的作用:1:安装和运行本机上的桌面程序.2:通过浏览器访问面向internet的应用程序 ü  Java技术平台:1.java SE是java的核心2.java EE主要用于网络程序和企业应用开发. 1.2.开发一个java程序 n  开发java程序的步骤: 编写源程序 编译源程序 运行程序 n  Java程序的结构 编写程序框架(public class He

C#基础知识篇---------C#笔记

   一.变量         1.什么叫做变量?            我们把值可以改变的量叫做变量.          2.变量的声明:            语法:[访问修饰符] 数据类型 变量名; 如: int number=10://声明了一个整型的变量number.            注意:一次声明多个变量之间要用逗号分隔.                  如:int number1,number2,number3....;          3.变量的赋值:        

嵌入式中烧写程序的基础知识有哪些

在嵌入式的基础知识学习中,烧写程序是必备的知识点之一,需要把写的程序代码烧写到单片机上,在单片机上检验写的程序代码是否正确,是否能够正常运行,下面我们来学习下什么是烧写和固件.常见的几种烧写方式.三种编程方式的区别. 简单整理下固件.烧写的定义以及烧写过程的几种方式. 一.什么是烧写(下载)和固件 嵌入式系统需要预先将程序写入ROM/FLASH中,在启动时载入运行这些程序,将已经生成的程序写入ROM/FLASH的过程叫做烧写.这样固化在存储介质上的文件叫固件(firmware).那么烧写即为更新

程序语言基础知识总结

语言实现了人与人之间的沟通,那么人与电脑之间怎么沟通呢?当然也是语言,它是程序语言.计算机是01的世界,通过程序语言,把人类的大千世界语计算机融合在了一起,amazing. 机器语言由01组成,直接用机器语言可读性差,难以理解,由此逐渐产生了汇编语言和高级语言.程序设计语言面向人,人们用它写出源程序,目标程序面向机器,语言处理程序充当翻译的角色,联通了人与机器. 语言程序是如何将源程序变为目标程序呢?下面是理论支持 文法和语言的形式描述: 上面导图是理论依据,下面是程序语言的大概构架 程序语言基

微信小程序开发基础知识总结

微信小程序在无论在功能.文档及相关支持方面,都是优于前面几种微信账号类型,它提供了很多原生程序才有的接口,使得我们的小程序在很多方面突破H5页面应用的限制,更加接近原生程序的功能,因此微信小程序具有很大的前景想象力.它提供了自己的视图层描述语言 WXML 和 WXSS,以及基于 JavaScript 的逻辑层框架,并在视图层与逻辑层间提供了数据传输和事件系统,可以让开发者可以方便的聚焦于数据与逻辑上. 1.小程序的目录结构 小程序的目录结构如下所示. 其中项目级别的的文件包括 app.js.ap

django 注册、登录及第三方接口程序(1):基础知识

一.概述 django有一套成型的注册登录模块,auth 系统包含如下: UsersPermissionGroupMessage 在settings.py配置中,少不了以下配置 MIDDLEWARE_CLASSES = ( 'django.middleware.common.CommonMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.contrib.auth.middleware.Authe

用Swing开发GUI程序(基础知识)

GUI(Graphics User Interface)图形用户界面,可以让用户看着界面操作,所以要比控制台程序更加直观,可以提供更加丰富的功能. 在Java中,GUI操作的支持API,一般保存在java.awt和javax.swing包中,但一般情况我们选择javax.swing,因为Swing界面开发API的功能比AWT更加强大. 一.使用窗口 (一)用JFrame类开发窗口 一般情况下使用javax.swing.JFrame类来进行窗口显示,JFrame常见的构造函数为: public J

二、程序语言基础知识

1.语言概述 基本概念 机器指令程序,最基本的计算机语言,二进制的机器指令序列: 汇编语言,书写格式取决于特定计算机的机器指令. 以上皆是低级语言,面向机器的语言. 高级语言:不依赖于机器硬件的程序语言.如:java.c.c++.php.python…… 语言处理程序:将高级语言或汇编语言翻译为机器语言. 方式分为:汇编.解释.翻译    源程序 解释程序:即解释器,将源程序翻译为中间代码 编译程序:即编译器,将源程序翻译成目标语言程序 区别:解释器,不生成独立的目标程序,解释程序和源程序(或其