Visual Studio C# WinForm开发入门(4):概述

一.Winform入门

WinForm 是 Windows Form 的简称,是基于 .NET Framework 平台的客户端(PC软件)开发技术,一般使用 C# 编程。在VS2019中,C# WinForm 编程需要创建「Windows窗体应用程序」项目。Windows 窗体应用程序是 C# 语言中的一个重要应用,也是 C# 语言最常见的应用。使用C#语言编写的 Windows 应用程序与 Windows 操作系统的界面类似,每个界面都是由窗体构成的,并且能通过鼠标单击、键盘输入等操作完成相应的功能。WinForm支持可视化设计,简单易上手,并可以接入大量的第三方UI库或自定义控件,给桌面应用开发带来了无限可能。

1.WinForm项目结构

在这里插入图片描述

1.WinForm项目结构
(1)引用:包括所有的系统库文件的引用依赖
(2)App.config:当前项目的配置文件
(3)Forml.cs:当前窗体的事件逻辑源码

  • Form1.Designer.cs:当前窗体的控件布局源码
  • Forml.resx:当前窗体的资源文件(图片、图标、资源等)
  • 注意:
    a.Form1.cs和Form1.Designer.cs都定义了Form1类,该类使用了 Partial关键词声明,其定义的类可以在多个地方被定义,最后编译的时候会被当作一个类来处理。因此两个文件各司其职,最后合并为一个类编译。
    b.要手动实现自定义窗体,可以添加自己的类,然后继承Form类即可

(4)Program.cs:当前项目程序的主入口Main,启动项目,运行初始窗口

namespace WindowsFormsApplearning
{//Program.cs 入口程序解读
    static class Program
    {
        /// <summary>
        /// 应用程序的主入口点。
        /// </summary>
        [STAThread]//1.[STAThread]Attributes语法,修饰Main方法。表示应用程序的默认线程模型是单线程单元
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());//2.开启窗口的消息循坏,初始化并启动Form1窗口
        }
    }
}

2.窗口设计与控件布局

2.窗体控件布局文件

(1)操作:在设计界面拖押控件,可以完成界面布局(控件大小、名称、类型、样式等)
(2)原理:设计界面自动关联Form1.Desioner.cs文件,在InitializeComponent()方法中会自动生成相关代码
(3)设计原则:

  • Form1.Designer.cs文件:窗体控件布局文件,一般【不需要我们修改】,只要通过设计界面代码就会自动生成。
  • Forml.cs文件:窗体事件逻辑代码的实现,一般【需要我们手动书写】,包括触发事件、回调、数据交互、跳转等等

3.手动添加控件:不通过设计界面,有两种方式
(1)在Form1.Designer.cs中添加:

private System.Windows.Forms.Button btn_design;//声明控件 //默认的控件初始化方法
InitializeComponent():
{
	this.btn_design = new System.Windows.Forms.Button();//定义控件
	this.btn_desion.Text="自定义控件";//设置Text属性 
	this.btn_desion.Location = new Point(40.40);//设置布局位置 Point(xy)
	this.btn_design.Size=new Size(100,40);//设置尺寸大小 Size(width,height) 
	this.Controls.Add(this.btn_design);//注册控件到窗体
}

(2)在Form1.cs中添加:

private Button btn_design;//声明控件 
public Form1()
{
	//先调用Designer.cs中的控件初始化方法
	InitializeComponent(); 
	this.btn_design=new System.Windows.Forms.Button();//定义控件
	this.btn_desion.Text="自定义控件";//设置Text属性 
	this.btn_desion.Location = new Point(40,40);//设置布局位置 Point(x,y)
	this.btn_desion.Size = new Size(100,40);//设置尺寸大小 Size(width,height)
	this.Controls.Add(this.btn_desion);//注册控件到窗体
}

(3)注意:
1.一般我们都使用拖拽添加控件,当然也有特殊情况需要我们手动添加(比如自定义控件)
2.窗体GUI中,左上角为原点(0,0),竖直向下为y轴,水平向右为x轴(宽度表示x轴上长度,高度表示y轴上长度),单位为像素。

3.窗口事件

4.WinForm 自动添加事件处理
(1)操作:在设计界面-控件属性-闪电符号(事件)-添加事件,就会在Form1.cs中自动生成该控件相应方法名称的事件触发函数
(2)MessageBox.Show0:显示弹出消息提示框
(3)GUI界面下Console.WriteLine不显示,需要使用调试模式

5.手动添加事件处理(以Btn_design为例)
(1)步骤:
添加按钮控件到布局
书写事件处理函数,必须符合 void function name(object paraml,EventArgse){}的形式
添加注册事件,this.Btn_design.Click += new EventHandler(this.showTip);
(2)注意:事件处理机制用到了委托和事件的C#基础,有时间可以看一下

4.时间显示器小练习

设计一个能获取本地时间并显示在文本框的时间查看器,设计思路就是:
1.在UI设计界面添加一个按钮Button和一个用来显示时间的文本框TextBox
2.给按钮Button添加点击事件,在事件中获取系统时间,并赋值给TextBox显示
(1)界面设计
在这里插入图片描述

(2)逻辑代码

namespace WindowsFormsApp Demol 
{
	public partial class Form1 : Form 
	{ 
		public Form1()
		{
			InitializeComponent();
		}
		//点击事件:获取当前时间赋值给TextBox 
		private void ShowTime(object sender, EventArgs e)
		{ 
			string time = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
			this.Time_filed.Text=time;
		}
	}
}

二.WinForm布局开发

1.常见的WinForm 自动界面布局(设计界面拖搜布局)
(1)操作:拖拽控件,放置在UI设 计界面上布局
(2)技巧:通过ctrl+多个控件选定,可以在上方工具栏进行细节的对齐微调,比如居中对齐、左对齐等。
(3)本质:每次拖拽添加一个布局控件,就会在窗口相应的Designer.cs设计布局代码文件中的InitializeComponent()方法中自动生成布局代码(比如Location、Size等),来实现布局。
(4)存在的问题:自动布局虽然方便灵活,但是当窗口大小拉伸改变时,布局控件不能实现自动适应,仍会保持原大小,因此自动布局只适用于窗口大小不变的情况

1.手动布局解决自适应问题

2.WinForm界面手动布局(并解决自适应问题)
(1)步骤:

  • 通过设计界面拖拽/手动注册组件的方式,初始化初始界面布局(此时属于自动布局)
  • 在Form.cs逻辑代码中重写Form父类的 OnLayout 方法,在方法内实现手动布局。OnLayout方法会在窗口大小变化时自动被回调调用,来重新设置组件的位置大小等属性实现自适应。
    a.调用父类的OnLayout(),不是必须的。
    b.获取当前窗口大小 CilentSize(仅客户区,不含标题栏)
    c.计算和设置每一个控件新的的大小和位置,实现动态布局

(2)注意:

  • Size属性指窗口大小(包括工具栏),ClientSize指客户区大小(不包含工具栏)
  • 本质:OnLayout方法会在窗口大小变化时自动被调用,来设置组件的位置实现自适应
namespace WindowsFormsApp_learning 
{
	public partial class Forml : Form 
	{ 
		public Form1() 
		{
			InitializeComponent();
		} 
		//重写父类的OnLayout方法,实现手动布局自适应 
		protected override void OnLayout(LayoutEventArgs levent)
		{
			//1.调用父类的OnLayout(),不是必须的
			base.OnLayout(levent);
			//2.获取当前客户窗口大小 ClientSize 
			int w=this.ClientSize.Width; 
			int h=this.ClientSize.Height; 
			//3.计算并设置每一个控件的大小和位置
			int yoff=0;
			yoff=4;
			this.text_box.Location = new Point(0, yoff);//坐标(0.4) 
			this.text_box.Size= new Size(w-80. 30);//尺寸(w-80.30) 
			this.btn_click.Location = new Point(w-80,yoff);//坐标(w-80,4) 
			this.btn_click.Size = new Size(80, 30);//尺寸(80,30) 
			yoff+=30;//第一行的高度 yoff+=4;//间隔 
			this.panel1.Location = new Point(0, yoff); 
			this.panel1.Size = new Size(w, h-yoff-4);
		}
	}
}

2.WinForm布局属性

3.WinForm布局属性(控件与布局相关的属性,设计界面可见)

(1)Anchor:固定、锚定(无论窗口怎么变化,控件的相对位置都不变)
-含义:固定控件与父窗口的【上下左右边距】不变,实现控件的锚定

  • 左上角固定:选定 Top.Left(默认)
  • 顶部固定,水平拉伸:选定 Top,Left,Right t
  • 居中固定:None(取消所有)

-注意:Anchor效果的好坏取决于控件的初始位置,因为控件的初始位置决定了控件的边距!所以要让控件固定右上角,就要初始设计时就放在右上角!

(2)Dock:停靠属性,将控件停靠在父窗口的一侧或者中央
-Top:上,控件停靠在容器上侧,宽度填满容器,高度可以调节
-Bottom:下,控件停靠在容器下侧,宽度填满容器,高度可以调节
-Left:左,控件停靠在容器左侧,高度填满容器,宽度可以调节
-Right:右,控件停靠在容器右侧,高度填满容器,宽度可以调节
-Fill: 中,控件填满容器中间 剩余 部分(所以说与控件添加顺序有关)。
-None: 无,不使用Dock属性
注意:
a.容器之间可以嵌套,使用布局属性(容器就是存放组件的,比如Panel)
b.Dock属性与Anchor属性不能同时使用
c.Dock属性不是固定边距了,就是相对位置填充

3.WinForm布局器

4.布局器 LayoutEngine
(1)含义:布局器就是容器内部组件的默认排列方式,所有的容器都带有一个默认的布局器

(2)自定义控件如何加入设计界面:

  • 工具 ->选项 ->Windows窗体设计器->常规 ->自动填充工具箱 ->True
  • 添加自定义的控件类源码到项目下
  • 生成/重新生成解决方案
  • 重新打开设计界面,在工具箱就可以看到自己的控件

(3)系统提供的布局器
-FlowLayoutPanel(流式布局):
-含义:普通的Panel面板容器控件,使用了FlowLayout流式布局,即所有内部组件按照顺序从左到右从上到下依次排列
-FlowLayoutPanel也可以使用 Anchor、Dock等属性,因为他也是窗体容器内的一个组件
-控件的选择技巧: 多个控件叠加到一起时,可以右键最上层控件,来进行重叠控件的选择

(4)系统提供的布局器
-TableLayoutPanel(表格布局):
-含义:普通的Panel面板容器,使用了TableLayout表格布局,即所有内部组件可以放置到不同的表格中(每个表格只能放置一个控件)
TableLayoutPanel也可以使用Anchor、Dock等属性,因为他也是窗体容器内的一个组件。搭配布局与布局属性,可以实现很多不同的布局效果。
-删除/添加行、列:右键表格Panel,可以添加、删除行/列
-调整表格大小:表格属性Columns可以通过绝对值、百分比、自动调整等方式来调整单元格的大小
a.绝对:固定像素值大小
b.百分比:除去绝对大小后,单元格占剩余大小的百分比
c.自动调整:根据内部控件的大小生成
-跨行/列控件:在控件的ColumnSpan/RowSpan调整控件可以跨行/跨列布局
注意:TableLayoutPanel控件每个单元格只能包含一个子控件。

(5)系统提供的布局工具
-默认布局:默认布局可以通过控件拖拽放置,并可以使用Anchor、Dock来调整

(6)自定义布局器:用户可以自己设计实现布局器,
这属于WinForm高级的内容,后面学习。

三.WinForm常用控件

1.Winform 组件的使用
(1)TextBox:输入文本框
-常用属性:尺寸Size、单行/多行 Multiline、密码输入PasswordChar、只读ReadOnly、显示/获取文本Text等
-常用事件:KeyPress按下按键(常用于输出完成点击回车,box.Text取输入值,事件e.keyChar取按下哪个键)
(2)CheckBox:复选框
-常用属性:尺寸Size、显示文本Text、Checked是否勾选
-常用事件:Click点击事件、CheckedChanged勾选状态改变事件
(3)ComboBox:下拉列表(只能单选)
-常用属性:
a.添加数据项:设计器编辑添加(属性->数据->Items,一行表示一个数据项)、程序手工添加(comboBox.Items.Add(“some”)😉
b.其他设置:Size尺寸、Text提示文本等
-常用事件:
a.获取选中的项:SelectedItem(选中项的值)、 SelectedIndex(选中项的索引,-1表示未选中)
b.选项改变事件:SelectedIndexChanged

  • 注意:Item可以添加字符串,也可以添加任意object类型(比如自定义对象),对象会以object.toString显示

(4)ListBox:列表框(展示数据、可单选/多选) -常用属性:SelectionMode(单选/多选模式)
a.单选模式获取选项:SelectedItem/SelectedIndex(选中项的值/索引)
b.多选模式获取选项:SelectedIndices/SelectedItems(选中项的索引集合/值集合)
c.添加数据项:设计器编辑添加(属性->数据->Items)、程序手工添加(listBox.Items.Add(“some”)😉
-常用事件:SelectedIndexChanged(选项改变)
-注意:Item可以添加字符串,也可以添加任意object 类型(比如自定义对象),对象会以object.toString显示

1.界面展示

2.实体类 Student(封装信息)

1.C# 类的属性与字段
(1)字段: 字段是类的成员变量,用于类内特征的数据存储(静态)比如private int Id;
(2)属性:属性是对字段特征的动态描述,用于向外界提供数据,本质上就是get、set方法。

  • 完整属性用法:

private string sdu_name;//声明字段 
public string StudentName
{
//声明属性 
	get
	{ 
		return sdu_name; 
	} 
	set 
	{
		if(value==null)
			sdu_name = "admin"; 
		sdu_name = value; 
	}
}

-get访问器:get访问器必须包含return语句,返回字段’realValue’。用于获取数据,如果没有get则字段为只写的
-set访问器:set访问器接受它的输入参数–value,并把它赋给字段,value 是隐式参数。用于设置数据,如果没有set则字段为只读的
(3)使用方式:直接使用
Class.StudentName来获取和设置数据,就像是直接使用公开的属性一样
(4)自动属性:简化字
段和属性的关系

  • 用法:public 数据类型 属性名{ get; set;}
  • 原理:c# 允许只声明属性而不声明后备字段,编译器会创建隐藏的后备字段。并且自动挂接到get,set访问器上。

(5)注意:
-属性也可以不与字段关联,可以当作函数进行复杂计算,比较自由灵活
-属性也可不用显示声明相应的字段,直接用于存贮数据。(自动属性)
-也可以通定义其他set、get函数来实现访问private字段的功能

namespace WindowsFormsApp_learning
{
	class Student
	{
		//属性访问器 
		public int SduId 
		{
			get; 
			set; 
		}
		public string SduName 
		{
			get; 
			set;
		}
		public bool SduSex
		{
			get; 
			set; 
		} 
		public string SduPhone 
		{
			get; 
			set;
		}
		public Student(int sduId, string sduName, bool sduSex, string sduPhone) 
		{ 
			SduId = sduId; 
			SduName = sduName; 
			SduSex = sduSex; 
			SduPhone = sduPhone; 
		} 
		public Student()
		{
		}
	} 
}

3.逻辑事件代码Form.cs

namespace WindowsFormsApp learning 
{
	public partial class Form4: Form { public Form4()
	{
		InitializeComponent();//初始化数据LoadData();
	}/***保存按钮触发事件-保存学生信息到本地文件*/ 
	private void save student(object sender, EventArgs e)
	{ 
		Student student = new Student(); 
		student.SduId=Convert.ToInt32(sduId.Text.Trim);//Convert格式转换 
		student.SduName=sdu Name.Text.Trim();
		student.SduSex=(sdu sex.SelectedIndex ==1); 
		student.SduPhone = sdu phone.Text.Trim();//以Json格式保存到本地文件 string JsonStr=JsonConvert.SerializeObject(student,Formatting.Indented);
		AfTextFile.Write("student.txt",JsonStr,AfTextFile.UTF8);
		MessageBox.Show("操作成功");} //读取文件,加载数据 
		private void LoadData
		{
			string JsonStr=AfTextFile.Read("student.txt".AfTextFile.UTF8);
			if(JsonStr == null) 
				return; 
			Student student = JsonConvert.DeserializeObject<Student>(JsonStr);
			sdu Id.Text=Convert.ToString(student.SduId); 
			sdu Name.Text= student.SduNames;
			sdu sex.SelectedIndex=student.SduSex?1:0;
			sdu phone.Text = student.SduPhone; 
		}
	} 
}

四.图片框与项目资源

1.图片框与资源
(1)添加资源来源:

  • 本地文件: 本地资源路径,比如"DllResources l\123.jpg"(注意使用Windows路径格式)
  • 项目资源文件:Properties/Resources.resx(项目资 源文件夹下)
    a.如何添加项目资源文件:双击Properties/Resources.resx->添加资源->添加现有文件->选择本地图片->重命名(规范化,以后使用时直接调用名字使用资源)
    b.能添加什么类型的资源:字符串、文本文档、图片、视频、音频等
    c.原理:Resources.resx 将添加的资源整合到了项目exe当中,因此就算删除源文件也不影响项目运行。在调用资源时,是通过自动生成的方法来获取资源。
    d.优点:将资源统一到项目中来,并且可以通过规范化的命名直接调用资源。
    e.使用:通过 Properties.Resources.资源名称;来直接调用你的资 源,方便快捷
  • 网络资源:比如"http://baidu/image/meinvjpg"

(2)图片资源加载类:
-C# 提供了Image抽象类,作为所有图片资源的总称
-C# 提供了 Image抽象类的具体实现类 Bitmap(位图、像素图),来具体加载读取图像。
a.比如 Bitmap img = new Bitmap(“D:\Resources\123.jpg”);
b.比如Bitmap img=Properties.Resources.img Conv;

(3)图片框控件:PictureBox - Size、Location属性:尺寸、 位置
-Image属性:图片资源(可以通过本地/项目资源文件导入)
-SizeMode属性:图片 的适应模式(StretchImage拉伸图片和图片框相同尺寸、Zoom缩放等)
-ErrorImage、 InitialImage属性:加载失败、加载图片显示之前所显示的图片

(4)图片框控件可视化配置:
在设计里拖动PictureBox并配置属性即可。

(5)图片框代码手动配置:
Bitmap img=Properties.Resources.imgConv;//读取图片资源
pictureBox.Image=img;//手动设置图片框控件 Image来源
pictureBox.SizeMode=PictureBoxSizeMode.Zoom;//手动设置图片格式

1.添加资源

2.图片框控件展示

界面设计就是简单的放置了一个 PictureBox控件,没有过多的设计。图片来源的设置使用代码方式,原因是在以后开发中图片往往不是固定的,需要动态变化,因此使用代码方式动态设置图片来源是比较推荐的

namespace WindowsFormsApp_learning 
{
	public partial class Form2 : Form 
	{ 
		public Form2()
		{
			//初始化所有组件 
			InitializeComponent;//初始化PictureBox控件-图片资源 
			Bitmapimg=Properties.Resources.img_Conv;
			pictureBox.Image=img;
			pictureBox.SizeMode = PictureBoxSizeMode.Zoom;
		}
	}
}

http://xunbibao.cn/article/58357.html

  • 2
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
c#编程集合资料,不错的应用设计,另附一些开发案例的下载地址,欢迎大家下载学习。 学习完本课程之后,我们需要达到以下目标: (1) 掌握基本的C#语法,熟练运用C#编写基本的程序逻辑。 (2) 能够创建C#控制台应用程序并处理输入输出。 (3) 掌握C#中的数组,并对数组进行相应的排序,查找操作。 (4) 熟练使用C#的字符串对象。 (5) 掌握Windows窗体应用程序的创建,能熟练使用常用的控件设计窗体界面。 (6) 掌握MDI应用程序的开发步骤。 (7) 了解ADO.NET的组成和工作原理。 (8) 通过ADO.NET访问对C#项目开发全程实录视频教程(全10个案例):htt: /cnrdn com/gCxC 课程说明… 第1章C#语法基础…… 核心技能部分 1.1 Net与C#概述. 111Net与C#的产生与应用 1.1.2 Visual studio 10 1.1.3创建C井应用程序 12 2C#语言基础 16 121变量与常量…16 12.2运算符和表达式 19 123C#语言中的注释 1.2.4使用 Console处理输入输出 21 1.3 C#语句结构 25 131条件语句 .25 132循环结构 32 任务实训部分.… 38 1:根据时间输出问候信息…… 38 2:三个数字比较大小 39 3:判断用户输入的字母 .40 输出裴波那契数列…… 翻着音 40 巩固练习 第2章嵌套循环和数组. 44 核心技能部分… .45 2.1 VS2008中的调试技巧 45 2.2 嵌套循环 47 2.3 数组. 50 231数组的定义 50 232数组的基木操作 50 233数组的排序 51 任务实训部分… 55 1打印等腰三角形 55 2:数组的操作 56 3:数组的排序。 错误!定义书签 4:数组的排序 错误!未定义书签 巩固练习 57 第3章方法与字符串 59 C#项目开发全程实录视频教程(全10个案例):htt: /cnrdn com/gCxC 核心技能部分 使用方法 311方法的定义 312方法的调用 63 313参数传递 String类 321C#语言中常用的字符串处理方法... 68 322格式字符串 32.3 String Builder类. 3.3 类型转换…14 331隐式转换 74 332显式转换.…… 74 333常用类型转换方法… 7 任务实训部分 77 1:方法的使用 2:从邮件地址提取用广名 80 3:网址类型分析 81 4:字符串转换 82 巩固练习. 84 第4章指导学习:阶段总结 86 知识总结 翻着 .:::a:a:.:::a:B:a:::::..aa:::.:.aa:.:aa::: 86 41.1核心技能目标 86 412知识体系总结… 86 4.2 综合实训 任务1:制作月份日历 任务2:数组数据添加和排序. 错误!未定义书签 任务3:自杀游戏… 错误未定义书签。 第5章 Win form常用控件 核心技能部分 90 创建 Windows应用稈序 90 511 Windows应用程序概述. 90 512创建第一个 Windows应用程序 5.13项目结构分析 5,2 Windows窗体….97 5.,21窗体中的常用属性. 98 522窗体中的常用事件…… 99 Windows窗体中的常用控件 9 C#项目开发全程实录视频教程(全10个案例):htt: /cnrdn com/gCxC 5.31 Winform控件公共属性… 532标签Labe) 01 533文本框( TextBox) ·,, 101 534按钮( Button)…102 535列表框 ListBox) 102 536组合框 Combobox) 103 53.7单选按钮( Radio Button)和复选框( CheckBox) 104 538图片框( Pictruebo×)..105 54用 Message Box类显示消息窗口 541消息框的显示……106 5.4.2消息框的返回值 107 综合案例:职员信息管理. 109 仟务实训部分…… 115 1:ATM信息查询 115 2:编写建表向导窗体…… 3:火车票预定程厅… 124 巩固练习… 第6章 MD窗体应用程序设计… 核心技能部分…… 130 6.1 SD窗体和MD窗体应用程序简介. 错误!未定义书签。 6.2 单文档应用程序的创建 30 62.1菜单栏( Menustrip) 130 622菜单栏的创建 130 623上下文菜单 ContextMenuStrip) 6.3 多文档应用程序 错误!未定义书签。 631创建多文档界面应用程序. 错误!未定义书签 632排列子窗口 错误未定义书签。 64图像列表( mageList控件… 134 65工具栏( ToolStrip控件) 135 66 状态( StatusStrip) 138 67选项卡( TabControl Timer控件 69 MD综合示例 错误!定义书签 任务实训部分……143 1创建记事本”应用程序 错误!未定义书签 2:增强”记事本”功能∴ 143 3:实现记事本字体样式设置… 144 C#项目开发全程实录视频教程(全10个案例):htt: /cnrdn com/gCxC 4:变色窗体 巩固练习……… 1448 第7章 使用 ADO. NET完成简单的数据库操作…. ·,, 150 核心技能部分 151 ADO. NET概述 151 1 ADO.NET的简介 151 7.12 ADO.NET的优点 152 713 ADO.NET的结 52 NET Framework数据提供程序 1154 7.21 Connection对象…………………………155 72.2使用 Connection对象链接到数据库 7.3异常操作 57 731try和 catch块 158 732数据库链接示例 Command对象 ∴161 741 Command对象简介 161 742 Command综合示例 任务实训部分 1:实现进销存系统用户注册 168 2:实现进销存系统用户登录.… 171 3:实现用户的删除功能…… .:.::::::.:...:::.:.:a.::::.:::::::::.:::.:::::::.:::.: 172 巩固练习 174 第8章使用 Data Reader完成查询功能 177 核心技能部分… 178 8.1 DataReader对象 811 Data reader对象简介 178 812 Data Reader对象常用的属性和方法 813 Data reader对象的使用 179 8.2 控件 81 821 Listview控件介绍…… 81 822 Listview控件的使用 数据库操作综合示例 187 任务实训部分…… L94 1:使用 Listview控件查询部门员工信息… 94 2:部门员工信息删除和修改 3:实现员工信息模糊查询... 203 巩固练习 204 C#项目开发全程实录视频教程(全10个案例):htt: /cnrdn com/gCxC 第9章 使用 Dataset实现断开式数据访问 206 核心技能部分.… 207 91数据集( Dataset) ·,, 207 911数据集( DataSet)简介…207 912数据集的结构 08 91.3数据集的工作原理 914创建 Data set对象…… 211 9,2 DataAdapter对象1211 92.1 DataAdapter对象简介… 211 922 DataAdapter对象的使用.. 213 3 Datagridview控什的使用 219 931 Data gridview控件简介 219 932 Datagridview控件的使用. 221 9 综合示例 226 仟务实训部分.… 229 1:航班查询窗体设计 29 2:显示所有航班信息 232 3:根据两地査询航班 .233 4:航班详细信息查询 234 巩固练习 235 第10章课程总复习… …)误!未定义书签。 101知识总结 错误!未定义书签 1011核心技能目标 错误!定义书签。 101.2知识体系总结 错误!未定义书签。 02任务实训 错误!未定义书签。 第11章项目案例:酒店管理系统…… 错误!未定义书签 111训练技能点…… 错误未定义书签。 112需求说明 错误!未定义书签 113设计与思路分析 错误未定义书签 113.1系统功能分析 错误!未定义书签。 1132数据库设计 错误!定义书签。 114实现步骤…… 错误!未定义书签 115时间分配 错误!定义书签 C#项目开发全程实录视频教程(全10个案例):htt: /cnrdn com/gCxC 第1章C#语法基础 学习内容 c#的发展史 C#的基本语法 C#的流程控制语句 俨能力目标 掌握仗用S2008开发C#NET控制台应用程序 掌握C#语言的基本语法 掌握c#的程序流程控制语句 C#项目开发全程实录视频教程(全10个案例):htt: /cnrdn com/gCxC 本章简介 从本门课开始我们将要开始学习¢#语言和NET平台。本章将使学员对NET和¢#有一个 初步的认识,了解C#开发环境,编写第一个C#控制台应用程序。C#语言的基本语法和我 们之前的学习的C语言、Java语言一样同属于C语言语法系列,有很多相似的地方,同时也 有一些不同的地方,因此我们在学习的时候需要注意它们之间的区别,不要混淆。在本章中, 我们需要掌握c#中的变量、数据类型、运算符、条件、分攴、循环等基C排基础语法,这些 语言层血的知识是我们编写所有程序的基础,因此必须牢固掌握。 核心技能部分 1.1Net与C#概述 1.1.1Net与C#的产生与应用 1. Anders Hejlsberg-C#之父 Anders hejlsberg原木是曾经大名鼎鼎的 Borland公司的一员,他曾经编写了 Pasca编译 器,又把 Turbo pascal变为面向对象的 Object Pascal,并以此为基础开发了轰动全球、盛极 时的廾发工具 Delphi,为 Boland公司赚了个盆钵满盈。 随着 Delphi日渐成熟, Anders的兴趣转向了Java领域,他在」ava开发领域扩展方面有 很多自己独特的想法,并想在此领域大展宏图,但 Borland的经营者们还要靠他这棵“摇 钱树”继续在 Delphi上人肆捞金,所以他有一段郁郁不得志。 比尔盖茨三顾茅庐,力邀 Anders hejlsberg,并许以重金和宽松的环境,终于把 Anders 挖到了微软的旗下,其后由其主持设计,在2000年6月发布了新的开发语言C#(读做C Sharp),此后微软在2002年推出了 Microsoft net开发平台。 3 1.1.1 Anders He jlsberg C#项目开发全程实录视频教程(全10个案例):http://cnrdn.com/gcxc 2.C#语及其特点 与Java一样,C#语言是一个完全的面向对象语言,它继承了C++、Java和 Delphi的优 点,又借鉴了VB的简单易学。体现了当今最新的程序设计技术的功能和精华。C#继承了C 语言的语法风柊,同时又继承了C+的面冋对象特性。不同的是,c#的对象模犁己经面向 Internet进行了重新设计,使用的是NET框架的类库;C#不再提供对指针类型的支持,使得 程序不能随便访问内存地址空间,从而更加健壮;C#不再支持多重继承,避免了以往类层次 结构中由于多重继承带来的可怕后果。NET框架为C#提供了一个强大的、易用的、逻辑结 构一致的程序设计环境。同时,公共语言运行时( Common Language runtime)为C#程序语 言提供了一个托管的运行时环境,使程序比以往更加稳定、安全。其特点有: 语言简洁。 保留了C++的强大功能 快速应用廾发功能 语言的自由性 强大的Web服务器控件。 支持跨平台 与XML相融合 如果之前没有其他话言的编程经验,使用c#语言编程将是一个良好的开端。如果有其 他语言的编程基础,程序员将发现¢#语言除了像ⅤB一样简单易学外,还是一种拥有强大 功能的语言。而且 ASP NET平台也是完仝通过c#语言开发的,这决定了C语言得天独厚的 优势。但在任何情况下,C#语言都不可能孤立地使用,它必须同 Microsoft. net framework 起使用,因为使用C#语言编写的所有代码总是在 Microsoft .net framework中运行。 1.1.2 Visual studio 微软针对Net推岀了功能强大的集成丌发环境来支持开发人员的№et应用程序丌发,这 就是 Visual studio,它是目前最主要的Net平台开发环境。VS集成了 NET Framework和Net 开发插件,可以用来进行几乎所有Net应用程序的设计和开发L作,如 Windows应用程序 Web应用稈序、 Windows服务、智能设备应用程序等。 随着 NET Framework的不断升级, Visua| Studio也在不断升级,其发展历程可以用表1-1-1 来说明 表1-1-1Vs发展历程 年代 2002 2003 2005 2008 2010 廾发工具版木Vs2002 VS2003 VS2005 VS2008 VS2010 Net 1.0 1.1 2.0 3.5 4.0 Framework 由于本学期的知识点主要集中在C#的基本语法、 Win forms开发和 ADO. NET,这些知识
C# Winform上位机是一种基于Windows桌面应用程序的上位机开发方式,可以通过串口通信等方式与下位机进行数据交互。以下是一个简单的C# Winform上位机的例子: 1.在Visual Studio中创建一个Windows Forms应用程序项目。 2.在窗体上添加一个ComboBox控件和一个Button控件。 3.在代码中引用System.IO.Ports命名空间,使用SerialPort类实现串口通信。 4.在Button的Click事件中编写代码,获取可用串口列表并在ComboBox中显示。 5.在ComboBox的SelectedIndexChanged事件中编写代码,获取选中的串口名称并打开串口。 6.在串口接收事件中编写代码,处理下位机发送的数据。 以下是一个简单的C# Winform上位机的代码示例: ```csharp using System; using System.IO.Ports; using System.Windows.Forms; namespace WinformSerialPort { public partial class Form1 : Form { private SerialPort serialPort; public Form1() { InitializeComponent(); serialPort = new SerialPort(); serialPort.DataReceived += new SerialDataReceivedEventHandler(serialPort_DataReceived); } private void Form1_Load(object sender, EventArgs e) { string[] ports = SerialPort.GetPortNames(); if (ports.Length != 0) { comboBox1.Items.AddRange(ports); comboBox1.SelectedIndex = 0; } else { MessageBox.Show("请插入串口设备!!"); } } private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { if (serialPort.IsOpen) { serialPort.Close(); } serialPort.PortName = comboBox1.SelectedItem.ToString(); serialPort.BaudRate = Convert.ToInt32(comboBox2.SelectedItem.ToString()); serialPort.Open(); } private void serialPort_DataReceived(object sender, SerialDataReceivedEventArgs e) { string data = serialPort.ReadExisting(); // 处理接收到的数据 } } } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吾爱技术圈

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值