1、代码折叠
#region 提示文本  #endregion
1-1、随机数:
Random rnd = new Random();
<();
2、万能类型转换:
类型  变量 = Convert.To类型(值);
3、循环:
·  for (int i = 0; i < length; i++){}
·  foreach (var item in 数组/集合){}
·  switch (值)
{//等值判断
case 值: 代码;break;
default:
}
4、· 数组创建:类型 [] 数组名 = new 类型[大小] {'赋值'};
· 数组名[下标] = '值';  //赋值
5、排序(升序):Array.Sort('值');
6、反转(降序):Array.Reverse('值');
7、判断值类型:char值是否
· 为数字: bool 变量 = char.IsDigit('值');
· 为字母: bool 变量 = char.IsLetter('值');
·
为标点符号: bool 变量 = char.IsPunctuation('值');
· 为空格: bool 变量 = char.IsWhiteSpace('值');
....................................................
8、String 类属性和方法:
> 长度:lenght ;
> 拆分:变量 .Split(拆分符);
> 提取子字符串:  string 变量名= 变量名.Substring(起始下标, 长度);
> 查:指定字符串出现的位置(没有返回:-1)
·int 变量 = 变量.IndexOf('字符');//第一个出现的位置
·int 变量 = 变量.LastIndexOf('字符');//到的是最后一个出现的位置
> 判断是否为指定字符串:
·
开头:bool 变量 = 变量.StartsWith("值");
·结尾:bool 变量 = 变量.EndsWith("值");
> 替换:类型  变量= 变量.Replace('旧字符', '新字符'); 
> 转换:
·大写:变量 = 变量.ToUpper();
·小写:变量 = 变量.ToLower();
>提取指定位置的单个字符:
·char 变量 = string 变量 [下标];
>去掉两边的空格:.Trim();
>去掉最后一个字符:名.Substring(0, 名.Length - 1);
-----------------------------------------------------------------------
Winform:窗体技术
// 属性、方法、事件 等...基本都一样(以下略写略记的)
1、标签:Label (lbl)
属性:text:文本值、font:字体、foreColor:字体颜、backcolor:背景颜、
AutoSize:自动调整大小、visible:状态(是否可见)
1-1、事件: click: 单击时....
-----------------------------------------------------------------------
2、按钮:button (btn)
属性:enabled : 是否可用、
3、文本框:TextBox (txt)
属性:passwordchar:密码框、scrollbarss:滚动条
方法:.focus(); : 获得焦点、
.SelectAll();选定文本框的所有文本
.clear(); 清空
4、时间控件: Timer (tim)
属性:Enabled : 启用状态、Interval:时间间隔(毫秒)
//运行原理:当Enabled 设置为:true 时每隔 Interval 秒 自动触发一次 Tick 事件
......  ........  .........  ........  ...........    .....................
5、列表框:listBox (lst)
·添加数据:名.Items.Add('值');
·删除数据:名.Items. [ Remove('值')或 .RemoveAt(索引)或 .clear() ];
·获取当前
选中值:名.Text
·当前选中索引: int 变量 = 名.selectedlndex;
·总行数: int 变量 = 名.count;
·根据索引获取对应的值:类型 变量 = 名.Items[索引];
······································
6、组合框(下拉框):comboBox (cbo)
属性:下拉样式:DropDownWidth
方法:
名.DisplayMember = "字段名"; //显示值
名..ValueMember = "字段名";  //隐藏值
7、图片框:pictureBox (pic)
属性:设置图片:Image
// 名.Image = Image.FromFile('图片路径'); //("文件夹\\图片名")
图片样式:SizeMode: Normal(正常的)/ Autosize(框随图片变)/ StretchImage(图片随框变)
------------------------------------------------------------------------------
8、单、复选框
·单:RadioButtonv (rad)
·复:checkBox    (chk)
属性:checked : 默认状态
9、容器控件:
·面板:panel (pnl)
·分组框:GroupBox (Gb)
·
·····································
10、窗体
属性:Icon : 图标、FormBorderstyle:边框样式、 MaximizeBox:最大化、MinimizeBox:最小化
StartPosition:(CenterScreen:居中)窗口启动位置、 WindowState:显示状态
AcceptButtom:响应回车键、
CancelButtom:响应 ESC 按钮、
Opacity:透明值
AutoSizeMode:自动调整大小模式
方法:关闭窗体:this.close();、 System.Environment.Exit(0);
Show窗体:类名  名 = New 构造方法();
显示窗体:名.show() / 名.showDialog();
menustrip和toolstrip
11、消息框
MessageBox.Show("消息" , "标题",按钮 , 图标); 有返 回值
例:DialogResult 变量= MessageBox.Show("消息","标题",MessageBoxButtons .YesNo, MessageBoxIcon.Asterisk);
-------------------------------------------------------------------------------
12、公共属性:
1:停靠:Dock、锚定: Anchor
13、列表视图 - ListView (lvw)
属性:view : 五种视图
整行选中:fullRowSelect、网格线:GridLines、失去焦点时突出显示:HideSelection
添加数据:
·创建空行对象:
ListViewItem 名 = new ListViewItem("值");
·向空行各个单元格赋值
//名.SubItems[0].Text = "值";//向第一个单元格赋值
//向后续赋值
名.SubItems.Add("值");
·将创建对象(赋值后)添加到 ListView 中
视图名.Items.Add(名);
添加图片:
·将ImageList 和 Listview 进行关联
属性:LargeImageLiset 、 SmallImageList
·设置每一行对象的 ImagelnDex
方法:
·获取当前选中行
ListViewItem 变量= 视图名.SelectedItems[0];
·获取当前选中行的某列值
类型 变量= (选中行)变量.SubItems[下标].Text;
·移除 ListView 中所有数据
lvw名 .Items.Clear();
·判断是否选中
if (lvw名.SelectedItems.Count == 0)
{
//代码 等于0没有选中           
}
·循环当前选中行取值:
for (int i = 0; i < lvw名.SelectedItems.Count; i++)
{
类型 变量 = lvw名.SelectedItems[i].SubItems[下标].Text;
}
·ListView增加数据简便方法
//导入命名空间:using System.Reflection;
foreach (类型 stu in 对象名/数组名)
{
ListViewItem item = new ListViewItem(stu.第一个字段名+"");
PropertyInfo[] mems = stu.GetType().GetProperties();
foreach (var a in mems)
{
if(a.Name != "第一个字段名")
item.SubItems.Add(a.GetValue(stu,null)+"");
}
lvw名.Items.Add(item);
}
------------------------------------------------------------------------------------
14、dataGridView (dgv)
属性:
·
AllowUserToAddRows:是否允许增加数据、AllowUserToDeletRows:是否允许删除数据、
ReadOnly:只读、BackgroundColor:背景、SelecttionMode:FullRowSelect//整行选中
方法:
1、获取当前选中行索引和列索引
int row(变量) = dgv名.CurrentCell.RowIndex; //行
int Column(变量) = dgv名.CurrentCell.ColumnIndex; //列
2、获取指定单元格的值
类型 变量名 = dgv名.[列索引/列名,行索引].Value;
3、获取总数:
dgv名.unt;
4、循环
for (int i = 0; i < dgv名.SelectedRows.Count; i++)
{
类型 变量 = dgv1.SelectedRows[i].Cells[下标].Value;
}
-------------------------------------------------------------------------------------
15、右键菜单: contextmenustrip  (mnu)
·必须将菜单与控件 ContextMenuStrip 属性关联
方法:循环获取菜单值
foreach (ToolStripItem item in 菜单名..Items)
{
if (item is ToolStripItem)
{
//代码
}
}
16、菜单: MenuStrip (mnu)
方法:循环获取菜单值
1、无图片菜单
foreach (ToolStripMenuItem item in 菜单名.Items)
{ //父菜单
if (item is ToolStripMenuItem)
{
/
/代码
}
foreach (ToolStripMenuItem sItem in item.DropDownItems)
{    //子菜单
if (sItem is ToolStripMenuItem)
{
//代码
}
}
}
2、有图片菜单
foreach (ToolStripItem item in 菜单名.Items)
{
if (item is ToolStripItem)
{
//代码
}
}
17、工具栏:ToolStrip
属性:
·设置提示文本:Tooltipext、显示样式:Displaystyle
改变图片和文字位置:TextInageRelation
18、状态栏: Statustrip (stp)
属性:Spring : 占满剩余空间、Bordersides:显示的边框方位、BorderStyle:边框样式
···---...———···---...———···---...———···---...———···---...———
ADO.NET
1、.Net 数据提供程序
@:SqlConnection : C# 与 SQL 连接
@:SqlCommand    : 对数据进行 增\删\查\改
@:SqlDataReader : 查询数据(单条查询)
@:SqlDataAdapter: 查询数据(批量查询)
2、步骤:(增\\删\\改\\单条查询)
·导入命名空间:using System.Data.SqlClient;
·
创建连接对象(用以C#和SQL连接)
SqlConnection con = new SqlConnection("server=.;database=数据库名;uid=sa;pwd=密码");
·打开连接: con.open();
·创建一个命令对象
SqlCommand cmd = new SqlCommand();
·为 cmd 指派任务
cmd.Connection = con;
cmd.CommandText = Sql语句;  //要执行的语句
·执行任务(选一)
1:int 变量 = cmd.ExecuteNonQuery(); // 返回受影响的行数
2:object 变量 = cmd.ExecuteScalar(); //返回首行首列值
3:SqlDataReader 变量= cmd.ExecuteReader(); // 单条查询(返回SqlDataReader对象)
变量.read(); //读取数据
类型 变量名= 变量[下标]; //提取字段值
变量.close(); //关闭阅读器
·关闭连接:con.close();
3、步骤:(批量查询)
·导入命名空间:using System.Data;
·创建连接对象(用以C#和SQL连接)
SqlConnection con = new SqlConnection("server=.;database=数据库名;uid=sa;pwd=密码");
·打开连接: con.open();
SqlDataAdapter da = new SqlDataAdapter(Sql语句, con);
·
将da带回的数据填充到数据集中
Dataset ds = new Dataset(); //创建数据集对象
da.Fill(ds,"表名");    //填充
名.Datasource = ds.Tables["表名"]; // 显示数据
··············································
异常处理
1、写法用法: try
{
//此处放可能会出现异常的代码
}
catch (Exception Ex)
{
//此处放处理异常的代码
//可处理也可不处理
}
finally
{
//此处放始终要执行的代码
}
---------------------------------------------------------------------------------------------
其他方法
1、当前系统时间:DateTime.Now.ToString();
·
················································
C#高级应用
1、查指定字符(是否包含):名.Contains("字符");
2、查指定字符位置:类型 变量名= 名.IndexOf("字符");
集合
1、Hashtable (存放键和值)
Hashta
ble 名 = new Hashtable();
名.Add(键, 值);//添加值
名.Remove(键);//移除值
名.clear(); //清除
类型 变量= 名[0];//获取值(根据键获取值)
名.Keys:键集合  名.Values:值集合
2、泛型集合
(1)、 List<;类型> 名 = new List<;类型>();
(2)、Dictionary<;键类型, 值类型> 名 = new Dictionary<;键类型, 值类型>();
················································· 
LING 技术
1、Ling
常用的扩展方法:(集合对象和数组对象调用)
·名.Where(p=>表达式(bool)); //从集合筛选出满足条件的数据(多条数据)
·名.Single(p=>表达式);  //筛选出满足条件的唯一一条数据
·
名.Select(p=>表达式);  //提取指定部分的值
·名.OrderBy(p=>表达式);  //升序
·名.OrderByDescending(p=>表达式); //降序
{再次排序要在排序后使用
·名.ThenBy(p=>表达式);  //再次排序(升序)
·名.ThenByDescending(p=>表达式);//再次排序(降序)}
·名.Take(数量);  //提取指定数量的前几条数据
·名.Skip(数量);  //跳过指定数量的数据.提取剩余的数据
·名.GroupBy(p => 分组统据); //分组
名.Key  //提取组名
·名.SkipWhile(p=>表达式); //条件成立时跳过.一旦不成立马上终止,提取剩余数据
·
名..TakeWhile(p=>表达式); //条件成立时提取.一旦不成立马上终止,不再提取剩余的数据
2、集合方法:
·Sum(); //求和
·Average(); //求平均值
·Max(); //求最大值
·Min(); //求最小值
·count(); //求个数
3、常用方法:
Enumerable.Range(起始值,个数); //生成连续的整数数字序列
Enumerable.Repeat(值,个数); //生成连续指定数量的重复的值
4、取整数
Math.Floor(小数);  //取比当前小的最大整数
5、其他
名.contains(); //是否包含
名.SelectAll(); //高亮度显示
名.text.Endswith(值); //是否以当前值结尾的
6、分页技术
1、int pages = (int)Math.Ceiling(集合名.Count / 每页显示条数.0); //获取总页数
下拉框名.DataSource = Enumerable.Range(1, pages).ToList(); //生成页码
2、 int count = int.Parse(下拉框名.Text) * 条数 - 条数; //要显示的数据
var result = students.Skip(count).Take(条数);  //提取数据保存到:var result 中
3、循环把提取在 result 中的数据显示到 ListView 中
foreach (类型 stu in result)
{
ListViewItem item = new ListViewItem(stu.第一个字段名);
item.SubItems.Add(stu.字段名);
...
lvw名.Items.Add(item);
}
4、首页:下拉框名.SelectedIndex = 0; 尾页:下拉框名.SelectedIndex = pages - 1;
上一页:if (下拉框名.SelectedIndex == 0){return;} else{下拉框名.SelectedIndex--;}
下一页:if (下拉框名.SelectedIndex == pages-1){return;} else{下拉框名.SelectedIndex++;}
-
------------------------------------------------------------------------------------------
三层架构
表示层:UI 业务层:{ 逻辑层:BLL 实体类:Model} 数据访问层:DAL
一、三层架构创建步骤:
1、新建项目 -》 其他项目类型 -》 解决方案(建一个空白解决方案项目) -》》
2、添加 -》新建项目(UI、BLL、Model、DAL){注:UI是建窗口应用程序、其他为:类库}
3、要使用其他类库时: 引用项目(对应的项目名) -》导入命名空间
二、连接数据库
1、在 UI 层添加 -》 应用程序配置文件、(不要改名)、
2、在 <configuration>
<appSettings>
<add key="sqlCon" value="server=.;database=数据库名;uid=sa;pwd=密码"/>
</appSettings>
</configuration>
3、在 DAL 层使用:引用 -》 .NET -》 System.Confiquration
再导入命名空间(3个):1、using System.Data;2、using System.Data.SqlClient;3、using System.Configuration;
4、使用:string str = ConfigurationManager.AppSettings["sqlCon"];
con = new SqlConnection(str); //连接SQL语句
注:释放空间:名.Dispose();
三、关系
UI 引用 Model、BLL
BLL 引用 Model、DAL
DAL 引用 Model
--------------------------------------------------------------------------------------------------------------------
其他
1、循环判断文本值
string name = txtName.Text;
if (name.Length < 6 || name.Length > 12)
{
lblTips.Text = "用户名不合法";
}
else
{
lblTips.Text = "";
}
for (int i = 0; i < name.Length; i++)
{
char c = name[i];
if (char.IsDigit(c))
{
lblTips.Text += ",用户名不能带有数字";
return;
}
}
-
---------------------------------------------------------------
2、