C#基础

C#基础

Console.write(); 类似于C语言中的printf()函数
区别:C中支持占位符%d,%c. 而C#不行
使用:输出
1.write()直接输出字符串,如:write("你好"); 若用/t,/n 须放入双引号中
2.write()输出变量,如int a = 12; write(a);
3.write()字符串+变量,如int a =12; write("a的值是"+a);
4.write()使用格式占位符:{} 如 int a =12; write("a的值是:{0}",a);

输入:Console.Read(); 类似于C语言中的scanf()函数。
如:

string sex = Console.ReadLine();

注:Console.ReadLine();获取到的都是字符串
如用户输入:12 得到的是:“12”.

注释:跟C一致
//: 单行注释
/**/:多行注释
///:文档注释

数据类型:
int:整型(4字节) short:短整型(2字节) lnog:长整型(8字节)
byte:字节
float double decimal(浮点数)
bool(布尔值)true false
string(字符串)
char(字符)
DataTime(日期)

变量:
等同于C语言
变量的声明与赋值。
语法:

int num;
num = 12;
or
int num = 12;

定义变量名的规范:驼峰式命名法.
eg: int StuAge;

常量:
意义等同于C语言,代表不可改变的量。
一旦定义,在使用过程中,不允许被修改。
常量关键字:const;
语法:

const 数据类型 常量名=;
const double PI = 3.1415926535; 

常量名命名规则:全大写。

掌握简单(原始)数据类型的转换
数据类型转换:
两种情况:
第一种:自动(隐式)转换
第二种:强制(显示)转换

重点:使用数据类型转换只需要考虑数据类型的大小关系。
注意:转换一般出现在数值类型之间的转换,也就是 byte,int,short,long,flort,double.
所以只需要掌握以上6种数据类型的大小关系。

byte<short<int<long<float<double

注意:从整型转换为char类型,通过ASCII。
自动转换:从小往大转。如从byte转换为short或者double,则该转换由系统自动完成。
强制转换:从大往小转。如double转换为int,则就需要由我们进行强制转换。

double db =12.5;
int num = 12;
int sum = db+num;//这个时候就必须进行计算结果的强制转换。  注意,进行运算时必须同类型

因为结果sum为int类型,而计算过程中,db为double类型,num为int类型。
在计算时,num会自动转换为double类型与db进行加法运算。算出来的结果一定为double类型。
而此时,sum又为int类型,所以必须将计算的结果强制转换为int.

//第一种解决方案:
//先计算得出结果,再转换类型
int sum = (int)(db+num);
//第二种解决方案:
int sum = (int)db + num;

如果需要转换以下这种类型的数字,则需要另一种转换方法。
string num =“12”;
利用parse()方法进行转换
只能将字符串转为其他类型。
如需要将上面的num转换为int。
则: int number = int.Parse(num);

万能转换器:Convert类
可将任意类型转为任意类型。

Convert.To数据类型
eg:
Convert.Toint32()  -->返回值:int
注:转为float   Convert.ToSingle()   -->返回值:float

判断:
if单分支语句

if(){
	语句1...
}
	语句2....

if else 双分支语句

if(){
	语句1...
}else{
	语句2....
}
	语句3....

if else if 单分支语句

if(){
	语句1...
}else if(){
	语句2....
}else if(){
	语句3....
}else{
	语句4....
}
	语句5....

switch语句:

switch(){
	case 常量1:
		break;
	case 常量2:
		break;
		.
		.
		.
	case 常量N:
		break;
	default:
		代码块;
		break;
}

switch能实现的功能,if else if 都能执行,反之则不一定。
switch只能在条件范围小,有固定常量值时使用。

循环:某一段代码块需要重复执行时
while循环(先判断后执行)

while(循环条件){
	循环体;
}

do while 循环(先执行后判断)

do{
	循环体;
}while(循环条件)

for 循环(先判断后执行)

for(int i=1;i<=5;i++){
	循环体;
}

break,continue
break:在循环中,只要遇到break,那么该循环直接结束。 如果出现循环嵌套,break只会结束他所在的当前循环体,不会结束外层循环。
continue:在循环中,只要遇到continue,则结束当前次循环,进入下一次。

数组
用作存储同类型的数据,可以存储多个数据,具体数量一旦定义,则无法改变。
语法:

	//声明数组:
		数据类型 [] 数组名;
		初始化数组:
		数组名 = new 数据类型[数组大小];

如:

int [] numbers = new int[5];

数组使用赋值的三种方式:
第一种:直接赋值
如:

int [] numbers = {12,13,14}; //常用

第二种:指定大小并赋值
如:

int [] numbers = new int[3]{12,13,14};

第三种:根据数组元素获得长度(不定义大小)
如:

int [] numbers = new int[]{12,13,14};

数组名.Length:获取该数组的大小。

数组的下标(index)是从0开始。
数组的赋值:

numbers[index]=;
nubmers[0]=12;

则该数组的第一个格子存放的数据就是12;

获取数组中的数据:

数据类型 变量=numbers[index];
 int num = numbers[0];

foreach:
只会用作查询显示数据
用作遍历数组或者集合中的数据,特点不能改变集合或者数组中的内容。因为在该循环中无法操作下标。
语法:

foreach(数据类型(数组为什么类型这就是什么类型) 变量名 in 集合或者数组){
			代码块
		}

字符串处理
双引号所包含的内容就叫字符串。
如:“123”; 该数字123为字符串,而不是数值。不能用作直接运算,需要强制转换。
在C#中,使用数据类型string进行表示字符串。
如:string age=“20”;
在C#当中,系统提供了一系列常用的字符串处理方法。
如:
trim():去掉字符串前后的空格。
ToLower():将大写字母变为小写字母。
ToUpper():将小写字符变为大写字母。
insert():将一个字符插入到指定的位置(下标)。
indexOf():得到某个字符第一次出现的下标位置。
LastIndexOf():得到某字符最后一次出现的下标位置。
Join():将两个字符串合并成一个新的字符串。
Replace():用某字符串替换掉原字符串
CopyTo():复制字符串
Split():将字符串以某个特定字符进行拆解,得到一个字符串数组。
Substring():截取指定位置的字符串。
Format():格式化字符串

注:Join方法是用
 string.Join("连接符",数组名).
Substring(StartIndex,length);下标,长度

方法

目的:实现书写一次代码,能够多次使用,简化代码块
(1).无参无返回值

访问修饰符 void 方法名(){
	代码块
}

//调用:(调用方法前应先实例化)
类名 i = new 类名();
i.方法名()

(2).有参无返回值

 void 方法名(形参1,形参2,形参n){
	代码块
}

//调用:
方法名(实参1,实参2,实参n);

(3).无参有返回值

数据类型 方法名(){
	代码块
	return;
}
//调用:
数据类型 变量名 = 方法名();

(4).有参有返回值

数据类型 方法名(形参列表){
	代码块
	return}
//调用:
数据类型 变量名 = 方法名(实参列表);

注:形参与实参数量顺序必须一致
return后的值与返回值类型必须一致

访问修饰符:修饰该方法访问的权限
public:公共的
protected:受保护的(需考虑包,继承关系)
internal:内部的
private:私有的
注:通常都为public,若没有写则默认为private。

随机数:

//创建对象:
Random rd = new Random();
//产生随机数.
int num = rd.Next();  //产生非负整数
int num = rd.Next(上限);
int num = rd.Next(下限,上限);

窗体

窗体命名要求:

frm + 英文描述
eg:
	frmLogin

常用属性
Icon:标题栏显示的图片(必须是xxx.ico图片)
Text:标题栏显示的字体
MaxMizeBox:是否显示最大化
MinMizeBox:是否显示最小化
HelpButton:是否显示帮助按钮(最大化,最小化和它只能显示其一)
StartPosition:窗体第一次出现的位置,值为CenterScreen,居于屏幕中央
FromBorderStyle:窗体边框样式,值为FixedSingle,运行后不能在变
AcceptButton:设置按“回车”相当于按了哪个按钮

共有的属性:
Text:文本值
Name:控件的名称
Enabled:是否启用
TabIndex:确定按"Tab"键的顺序
BackColor:背景颜色
BackgroundImage:背景图片
BackgroundImageLayout:背景图片布局方式

常用事件(加载事件)窗体加载时发生(按下运行后,就会执行Load事件执行完后窗体才会显示)
任何在窗体呈现时就已经有的事件,都应写在Load事件中

事件
一种行为做不同的行为就会触发不同的事件

控件:
所以控件公有属性
Text:显示文本内容
Font:设置字体
ForeColor:字体颜色
Enabled:是否启用控件
TabTndex:确定按Tab键顺序

Lable:文本(lbl + 描述)

Button:按钮(btn + 描述)
常用事件:Click(单击事件默认)
this:当前窗体
取控件的值:

数据类型 变量名 = this.控件名.Text;

给控件赋值:

this.控件名.Text =;

TextBox:文本框(txt + 描述)
判断非空

if(this.控件名.Text.Trim()==""){
	//消息提示框
	MessageBox.Show("要提示的内容","标题",MessageBoxButtons.按钮,MessageBoxIcon.图标);
	//让文本框获取焦点
	this.控件名.Focus();
}

清空文本框:

方式1this.控件名.Text ="";
方式2this.控件名.Clear();

消息框:

MessageBox.Show("要提示的内容");
MessageBox.Show("要提示的内容","消息框的标题");
MessageBox.Show("要提示的内容","消息框的标题",MessageBoxButtons.按钮,);
MessageBox.Show("要提示的内容","消息框的标题",MessageBoxButtons.按钮,MessageBoxIcon.图标);

关闭当前窗体:

this.Close();

ComboBox:组合框(下拉列表框)(cbo + 描述)
常 用属性;
Name:名称
Text:文本值
Items:集合
DropDownStyle:值为DropDownList表示只能选择,不能修改

常用操作:
(1)往控件中添加项:

this.控件名.Items.Add();		//值可以是:任何类型(object)

(2)默认选中第一项;

this.控件名.SelectedIndex = 索引;	

当往控件中添加多项之后,就通过索引来区分每一项(索引就是下标,从0开始)

(3)判断是否选中:

if(this.控件名.SelectedIndex==0 或者 this.控件名.Text=="--请选择--")
{
	.....................
}

(4)删除项;
方式1:删除指定的项;

this.控件名.Items.Remove(要删除项);		

方式2:根据下标删除:

this.控件名.Items.RemoveAt(下标);

(5)删除所有项(清空所有项):

this.控件名.Items.Clear();

常用事件;
SelectedIndexChanged:默认事件(触发时间更早)
SelectionChangeCommitted:下拉列表选中某个项而列表项关闭时发生 你不选它就不触发

格式化:

string str = string.Format("....");

RadioButton:单选 前缀:rdobtn+描述
常用属性:
Name:控件名称
Text:控件显示的文本
Checked:是否默认选中
判断是否选中:

if(this.控件1.Checked==false && this.控件n.Checked==false)
{
	未选择...................
}

单选框取值:
方式1:

string sex="";
	if(this.rdobtnNan.Checked == true)		注意:==true可以不写
	{
		sex = "男"	或者 	sex = this.rdobtnNan.Text
	}
	else
	{
		sex = "女"	或者 	sex = this.rdobtnNv.Text
	}

方式2:

string sex = this.rdobtnNan.Checked == true ? "男" : "女";

消息框返回值:DialogResult

MessageBoxButtons.OKCancel //表示消息框上出现:确定和取消
DialogResult dr =  MessageBox.Show("您确定要删除吗","温馨提示", MessageBoxButtons.OKCancel, MessageBoxIcon.Information);

if(dr == DialogResult .OK)   //根据显示的按钮来判断
{
	点击了确定.....
}
else
{
	点击了取消........
}

窗体跳转:
步骤1:创建要跳转的窗体对象

窗体名   对象名  = new 窗体名();

例如:

frmMain main = new frmMain();		//注意:frmMain是要跳转的窗体的名称		main是自己取的对象名(像变量名一样)

步骤2:显示窗体

对象名.Show();
eg:	
main.Show();

Timer:计时器
常用属性;
Enabled:是否启用,如果是false,计时器被禁用
Interval:间隔时间(单位是毫秒)
常用事件;
Tick:每当经过间隔时间时就会触发
常用方法;
Start():启用计时器 语法:this.计时器控件名.Start();
Stop:停止计时器 语法:this.计时器名.Stop();

Picturebox:图片框
常用属性:
Image:设置图片框显示的图片

ImageList:图片列表
常用属性;
Images:图片的集合
从控件中获取某一张图片:

this.控件名.Images[下标];

MenuStrip:菜单栏
根菜单快捷键设置;
Text属性值:描述&字母 文件(&F)—>按下Alt+F就能打开这个菜单
子菜单快捷键设置:
ShortcutKeys:选择对应的快捷键

命名前缀:tsmi+描述 例如:tsmiOpen tsmiClose
注意:双击子菜单,就能使用它的单击事件

ToolStrip:工具栏
工具栏上的Button控件:
常用属性:
Name:控件名称 前缀:tsbtn+描述
Text:显示的文本
Display:设置图片与文的显示方式 ImageAndText表示图片文字都
Image:按钮上显示的图片
TextImageRelaction:图片与文字的排版方式(文字在图片在上下左右哪个位置)

工具栏调整大小;
步骤1:选中“ToolStrip”整个工具栏,设置两个属性
属性1:Locked设置为true(表示允许调整控件的大小)
属性2:ImageScalingSize的值设置为更大(放大缩放比例,如:60,60)
步骤2:选中工具栏上的其中一个控件(如按钮),设置一个属性
Size属性:调整尺寸(如:80,65),回车之后,其它控件将会自动放大

StatusStrip:状态栏

多文档窗体(MDI):必须将窗体的IsMdiContainer设置为true
是指一个父窗体中可以同时打开多个子窗体

单文档窗体(SDI):
是指一个父窗体中只能打开一个子窗体

打开一新窗体:
步骤1:创建要找开的窗体的对象

Form1 f1 = new Form1();

步骤2:显示该窗体
方式1:普通窗体

f1.MdiParent =  this;	//设置它的父窗体为:当前窗体( 必须将窗体的IsMdiContainer设置为true)
	f1.Show();		//普通窗体,可以同时打开多个(多文档)

方式2:模式话窗体

f1.ShowDialog();		//模态窗体(模式话窗体),只能打开一个子窗体(单文档)

ADO.NET

C#连接sqlserver数据库
C#连接mysql数据库

什么是ADO.NET:
是应用程序(winform)与数据库之间的桥梁,在应用程序中可以使用ADO.NET来操作数据库(增,删,改,查)

ADO.NET的两大组件:
(1) .netframework数据提供程序 负责:提供了四大对象供用户操作数据库

(2) DataSet(数据集,内存数据库,临时数据库) 负责:负责临时存放数据

四大对象:using System.Data.SqlClient; (引入命名空间)
(1)SqlConnection:连接对象
负责:打开、关闭数据库
常用方法:
Open():连接打开数据库
Close():关闭数据库

(2)SqlCommand:命令对象
负责:执行sql语句(insert update delete select)
常用方法:
ExecuteNonQuery():负责执行insert update delete
ExecuteScalar():负责执行select,返回:查询结果中第一行第一列的值 单行单列查询
ExecuteReader():负责执行select,返回:DataReader(利用这个读取器读取需要的数据) 多行多列查询

(3)SqlDataReader:数据读取器
负责:读取数据(将数据库中的数据读取应用程序) 特点:一次只读一行,只向前只读,读取数据基本不能关闭数据库(连接式查询)

(4)SqlDataAdapter:数据适配器
负责:执行select 语句,并且可以将查询到的数据全部一次性取出来 (断开式查询),放到DataSet中

执行增、删除、改:

//步骤1:创建连接对象有(目的:打开和关闭数据库)
	SqlConnection conn = new SqlConnection("server=. ; database=要连接的数据库 ; uid=用户名 ; pwd=密码");		//注意:conn是自己取的对象名

//步骤2:打开数据库(注意:打不开就是连接字符串有问题)
	conn.Open();

//步骤3:创建命令对象(目的:为了执行sql语句)
	SqlCommand cmd = new SqlCommand(sql,conn);	//理解:告诉cmd在conn打开的数据库中去执行sql语句		sql是变量名,里面装的是要执行的sql语句

//步骤4:执行(执行出错就是sql变量中的语句有错误)
	int row = cmd.ExecuteNonQuery();			//注意:row是自己取的变量名,接收方法的返回值(返回的是受影响的行数)

//步骤5:关闭数据库
	conn.Close()

//判断:
	if(row >= 1)
	{
		成功........
	}
	else
	{
		失败......
	}

数据查询:

//步骤1:创建连接对象
	SqlConnection conn = new SqlConnection("server=.;database=数据库名;uid=sa;pwd=123456");

//步骤2:打开数据库
	conn.Open();

//步骤3:创建命令对象
	SqlCommand cmd = new SqlCommand(sql,conn);

//步骤4:执行
	object 变量名 = cmd.ExecuteScalar();		//返回sql语句执行后查询结果中:首行首列的值(第1行第1列)(单行单列查询)

//步骤5:关闭数据库
	conn.Close();

//判断:
	if(变量名 == null)	//表示没有取到任何数据
	{

	}
	else		//表示取到了数据
	{
	
	}

数据增、删除、改、查:

//步骤1:创建连接对象
	SqlConnection conn = new SqlConnection("server=.;database=数据库名;uid=sa;pwd=123456");

//步骤2:打开数据库
	conn.Open();

//步骤3:创建命令对象
	SqlCommand cmd = new SqlCommand(sql,conn);

//步骤4:执行
	//(1)执行insert update delete语句:
		int 变量名 = cmd.ExecuteNonQuery();		//返回sql语句执行后受影响的行数
	//(2)执行select语句:
		object 变量名 = cmd.ExecuteScalar();		//返回sql语句执行后查询结果中:首行首列的值(第1行第1列)(单行单列查询)
	//(3)执行select语句:
		SqlDataReader 变量名 = cmd.ExecuteReader();	-->数据读取器,可以使用这个读取器在数据库中读取需要的数据	(多行多列查询/连接式查询)

//步骤5:关闭数据库
	conn.Close();

断开式查询:

//步骤1:创建连接对象
	SqlConnection conn = new SqlConnection("连接字符串");

//步骤2:创建数据适配器
	SqlDataAdapter sda = new SqlDataAdapter(sql,conn);

//步骤3:创建数据集(准备的一个装数据的容器)
	DataSet ds = new DataSet();

//步骤4:填充数据(sda适配器将取到的数据放到/填充到dataset中去)
	sda.Fill(ds);

	
 //将dataset中的数据显示到控件中去(数据绑定)
  this.dgvInfo.DataSource = ds.Tables[0];

ComboBox:下拉列表框
数据绑定:

	//步骤1:指定数据源
		this.控件名.DataSource = ds.Tables[0];		//ds:装数据的DtaSet
	//步骤2:指定显示列:
		this.控件名.DisplayMember = "字段名";		//呈现给用户看的那个列的名称
	//步骤3:指定实际列(隐藏列):
		this.控件名.ValueMember = "字段名";		//可选的,可要可不要

//只要绑定数据时设置了两个值,取值时就可以取两个:
	//取显示值:
		this.控件名.Text
	//取实际值:
		this.控件名.SelectedValue;	//取出来是object类型

DataGridView获取选中行的值:

this.控件.SelectedRows[0]:获取选中项的第一行
this.控件.SelectedRows[1]:获取选中项的第二行		要选中两行才不会报错

DataGridView获取上行某个列的值:

this.控件.SelectedRows[0].Cells[索引].Value:索引就是从0开始数的下标	出来来是:object类型
this.控件.SelectedRows[0].Cells[0]:获取选中项第1行第1列的值

C#中到调试:
设置断点 --> F5运行 --> F10 执行下一句代码(F11代码块为方法,进入其中看过程)
shift + F5 停止调试
一个文件可有n个断点,但调试完毕一定要取消断点

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值