一、VB.NET
是一种面向对象的编程语言,主要用于企业级应用程序开发、Web应用程序开发、桌面应用程序开发等各种领域的开发
1、.NET
.NET 分成两个方面:WinForm和WebForm,
- ASP.NET属于WebForm,B/S模式开发。Asp.NET可以用C#或VB.NET来开发,编译后形成CLR,通过服务器的IIS+.NET FrameWork再次编译来运行
- WinForm属于C/S模式
2、CLR的结构:
- CLS:公共语言规范,获取各种语言转换成统一的语法规范。
- CTS:通用类型系统,将各种语言中的数据类型转换成统一的类型
- JIT:实时编译器(即时编译器)用于将转换之后的语言编译为二进制语言,交给CPU执行。
作用:(相当于java虚拟机,内存管理,垃圾清理)
3、对比.NET和java
.NET运行的机制流程
各种语言(c#,F#,j#等对应的源程序)——>经过CLS,CTS第一次编译——>统一规范语言(中间语言)MSIL(.EXE,.DLL)——>JIT第二次编译——>二进制语言——>运行在CPU中
java的运行机制:
java——>编译——>字节码文件(.CLASS)——>jvm解释(jvm虚拟机)——>二进制语言——>运行在CPU中
4、VB.NET程序结构
-命名空间声明
-一个类或模块
-一个或多个程序
-主程序主入口
Imports System `命名空间声明
Module Module1 `一个类或模块
`This program will display Hello World `注释
Sub Main() `Main过程,它是所有VB.Net程序的入口点
Console.WriteLine("Hello World")
Console.ReadKey()
End Sub
End Module
5、VB.net面向对象语言语法区别点
- 末尾不用加;
- 变量、函数、对象的定义使用As关键字 例:private name As String
- 不使用{}结尾用End关键字
- if条件句使用 if 条件句 Then 执行句 Else 另执行句 End if
- Dim语句用于一个或多个变量的变量声明和存储分配。 Dim语句用于模块,类,结构,过程或块级别
- sub 相当于void
- !变成 not ,!= 变成 <>
- 多了属性(与前端getter和setter相似)
6、变量定义格式
Array arr
Button btn
CheckBox chk
Label lb1
ListBoxe lst
Object obj
RadioButton rdb
TextBox txt
XML xml
7、API总结
- 控制台程序:Console.ReadLine() 、Console.WriteLine
- Web.config 可以看做spring中的spring的配置xml
- SOAP交换消息,一条 SOAP 消息就是一个普通的 XML 文档,封装定义了一个描述消息中的内容是什么,是谁发送的,谁应当接受并处理它以及如何处理它们的框架
- WSDL服务描述,是一种 XML 文档,描述SOAP协议的具体语言,用WSDL实现SOAP协议
- WSFL将分散的、功能单一的Web服务组织成一个复杂的有机应用 服务者绑定调用也可以称发送消息给服务提供者
二、界面美化
- 页面布局:布局合理、对齐整齐,容器控件Panel、GroupBox组织和分隔控件,使界面看起来更清晰和有序
- 使用第三方或自定义的控件来替换默认的控件,使窗体的界面更加美观:开源的控件库如 MetroFramework、DevExpress WinForms
- 添加背景图片增加窗体的视觉效果
- 引用.DLL使用皮肤库:使用皮肤库为窗体和控件应用不同的皮肤样式,实现界面的美化:在文件引用.DLL相关皮肤文件并在代码中加载
- GDI+自定义绘制:重写窗体或控件的绘制方法,实现自定义的界面样式和效果
三、winform窗体常用控件的属性、方法
常用控件的事件、方法和属性:
Lable、Button、ComboBox、ListView、DataGridView、RichTextBox
----Label (标签)
属性:
Text:设置或返回标签控件中显示的文本信息
AutoSize:用来获取或设置一个值,该值指示是否自动调整控件的大小以完整显示其内容。取值为 true时,控件将自动调整到刚好能容纳文本时的大小,取值为false时,控件的大小为设计时的大小。默认值为false。
Anchor:可以设定 Top、Bottom、Right、Left 。子控件与父控件的位置关系
----Button(按钮)
属性:
Text: 按钮上显示的文本
Enabled: 指示按钮是否可用
事件:
Click: 当按钮被点击时触发的事件
MouseHover, MouseLeave: 鼠标悬停和离开时触发的事件
----ComboBox(下拉框)
属性:
Items: 下拉框中的选项列表
DropDownStyle: 下拉框的样式,如DropDown、DropDownList等
SelectedIndex, SelectedItem: 当前选中项的索引和值
事件:
SelectedIndexChanged: 选中项改变时触发的事件
DropDown: 下拉框展开时触发的事件
----ListView(列表视图)
属性:
Items: 列表项的集合、Columns: 列头的集合,用于定义列表的列
View: 列表的显示模式,如Details、LargeIcon等
方法:
Add(), Remove(), Clear(): 添加、移除和清空列表项
Sort(): 对列表项进行排序
ItemSelectionChanged: 选择项改变时触发的事件
ColumnClick: 点击列头时触发的事件
事件:ItemSelectionChanged: 选择项改变时触发的事件
ColumnClick: 点击列头时触发的事件
----DataGridView(数据网格视图)
属性:
DataSource: 数据源,绑定到DataGridView显示数据
Columns: 列定义,可以手动添加、删除和编辑列
Rows: 行集合,可以手动添加、删除和编辑行
方法:
Refresh(): 刷新DataGridView显示的数据
Update(): 更新数据源中的数据到DataGridView
事件:
CellClick, CellDoubleClick: 单元格点击和双击时触发的事件
CellValidating, CellValidated: 单元格验证前后触发的事件
----RichTextBox(可以输入文本、 又可以编辑文本的文字处理控件)
属性:
Rtf:获取或设置RichTextBox控件中的文本,包括所有RTF格式代码。通常用于在RichTextBox控件和其他RTF源之间交换信息
方法:
Redo:重做上次被撤销的操作。例:RichTextBox对象.Redo() 该方法无参数
Find:从RichTextBox控件中查找指定的字符串。例:RichTextBox对象.Find(str)
SaveFile:用来把RichTextBox中的信息保存到指定的文件中。例: RichTextBox对象名.SaveFile(文件名);
四、变量、属性、方法、事件、控件Name的命名
1、变量命名规则:
- 小驼峰命名法,即首字母小写,后续每个单词的首字母大写,如 userName、startDate
- 变量名应该尽可能描述其用途,避免使用过于简单或者不具备实际含义的名称
2、属性命名规则:
- 帕斯卡命名法,每个单词的首字母都大写,如FirstName,LastName,Address
- 属性名称应该准确描述其所代表的数据或状态
- 属性和对应的私有字段(如果有的话)应该有清晰的命名区分,通常私有字段可以在前面加上下划线 _,如_userName
3、方法命名规则:
- 帕斯卡命名法,同理属性命名规则,如CalculateTotal, SaveData, LoadCustomer
- 方法名通常应该使用动词或动词短语来描述其操作,以便于理解方法的功能
- 方法名应该尽量避免与类中其他成员(如属性)的名称冲突
4、事件命名规则:
- 事件名应该描述发生的动作,通常以动词开头,如 ButtonClick, TextChanged, ItemSelected
- 事件名称应该清晰地表达其所关联的控件和用户动作
- 可以考虑添加一致的后缀来表示事件类型,例如使用 EventHandler 后缀,如 ButtonClickEventHandler,TextChangedEventHandler
5、控件标签Name命名规范:
Label标签为lbl,TextBox为txt,Button为btn。lblName,btnLogin,txtPwd
五、winform窗体代码逻辑
Form可以看成一个大容器.里面可以放各种控件.
1、文件结构:
Properties : 设置项目属性
引用: 指的是它所依赖的一些系统库,可以设置对其他项目命名空间的引用
App.config: 当前应用的配置文件,可以设置数据库的配置信息
Form1.cs: 业务代码,设置窗体界面以及编写逻辑代码
Form1.designer.cs: 界面代码,自动生成,一般不需要进行修改 源码文件
Form1.resx: 资源文件,用于资源导入,通过该文件导入资源,无需引用外部文件
program.cs: main()方法的入口,设置项目运行时的主窗体
2、InitializeComponent()方法:
- 作用: 完成Form的初始化,Form的样式、布局,以及Form上面的控件如button、textbox等的创建
- form.designer.cs 定义 InitializeComponent()方法,
- Form.cs 调用 InitializeComponent()方法
- InitializeComponent:初始化窗体及窗体上的控件,加载并分配资源,注册相关事件。
- 注意事项: 在初始化的方法前边,不可以写任何代码!
3、Form1.cs 和Form1.cs
- Form1.cs 由Form1.cs[设计]界面与Form1.cs[逻辑代码]/Form1.Designer.cs两部分构成
- public partial class Form1 : Form中的partial class 实现类的拆分,部分类的好处是能够让自动生成的代码后置
- Form1.cs(放业务的逻辑)
- Form1.designer.cs(自动生成的)
4、program.cs主程序入口代码逻辑
[STAThread]//COM线程模型--单线程单元,如果没有它,是无法工作的
Application.EnableVisualStyles();在应用程序中创建任何控件之前调用它
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());
Application用于启动和停止应用程序、处理 Windows 消息的方法和获取应用程序信息的属性。 此类不能被继承
5、object sender,EventArgs e
- object sender: 事件的发送者,即触发事件的对象。在事件被触发时,这个参数通常是引发事件的对象本身。例如,如果点击了一个按钮,按钮就是发送者。按钮事件本身
- EventArgs e: 事件数据对象,它包含有关事件的额外信息参数。EventArgs 是一个基类,通常被用作事件处理器的第二个参数,它本身可能是一个空类,或者包含一些事件相关的数据,具体取决于具体事件的定义。代表点击事件
所有的控件都直接或间接继承自Control类,Control类中提供了许多属性,这些属性都是控件的共同特征
6、代码逻辑梳理-举例按钮控件
Form 类的基本结构,它定义了窗体的基本行为和事件处理机制
public partial class MyForm : Form
{
public MyForm()
{
InitializeComponent(); // 初始化窗体组件
}
private void InitializeComponent()//form.designer.cs中定义的InitializeComponent方法
{
// 自动生成的代码,用于初始化窗体的组件
this.button1 = new System.Windows.Forms.Button();
this.SuspendLayout();
// 设置按钮属性
this.button1.Location = new System.Drawing.Point(100, 100);
this.button1.Name = "button1";
this.button1.Size = new System.Drawing.Size(100, 50);
this.button1.Text = "Click me";
this.button1.Click += new System.EventHandler(this.button1_Click);
// 将按钮添加到窗体
this.Controls.Add(this.button1);
this.ResumeLayout(false);
}
private void button1_Click(object sender, EventArgs e)
{
MessageBox.Show("Button clicked!");
}
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose(); // 释放组件资源
}
base.Dispose(disposing);
}
private System.Windows.Forms.Button button1;
}
Application 类是整个应用程序的入口点,负责启动应用程序和管理应用程序的全局状态,提供 static 方法和属性以管理应用程序
Application.Run(new MyForm()); // 运行窗体
初始化阶段:
Application.Run(new MyForm()); 创建并运行 MyForm 窗体
InitializeComponent() 方法被调用,自动生成并初始化窗体上的控件,包括 button1 按钮
按钮点击事件
Dispose方法:
窗体关闭时,代码调用 Dispose() 方法时,Dispose 方法会释放窗体使用的资源,包括 components(包含窗体的所有控件)
六、构造函数Form和load事件
.net的面向对象就把每一个控件都作为类来处理,因此面向对象的角度来说。
先调用构造函数Form后执行load(作为一事件来处理的)
双击事件中的Load右边的空白处,可在当前Form的窗体代码中看到出现了下面代码段,在里面添加窗体载入时的事件即可。
Load事件:Load事件在窗体加载完成后触发,可以在该事件中进行一些初始化操作,例如设置控件的属性、加载数据等
Shown事件:Shown事件在窗体显示之前触发,可以在该事件中执行一些需要在窗体显示之前完成的操作,例如显示欢迎信息、弹出提示框等
七、其他
MessageBox.show()弹出一个消息框。所以一般测试是用这个方法。因为程序运行的时候,控制台是不起作用的