IT知识库 购物 网址 游戏 小说 歌词 快照 开发 股票 美女 新闻 笑话 | 汉字 软件 日历 阅读 下载 图书馆 编程 China
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题 autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程 CSS/HTML/Xhtml html5 CSS XML/XSLT Dreamweaver教程 经验交流 开发者乐园 Android开发资料
站长资讯 .NET新手 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA VisualStudio ASP.NET-MVC .NET控件开发 EntityFramework WinRT-Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动 Html-Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP OracleERP DynamicsCRM K2 BPM 信息安全 企业信息 Android开发 iOS开发 WindowsPhone WindowsMobile 其他手机 敏捷开发 项目管理 软件工程 SQLServer Oracle MySQL NoSQL 其它数据库 Windows7 WindowsServer Linux
  IT知识库 -> ASP.NET -> C#基础笔记(第十五天) -> 正文阅读

[ASP.NET]C#基础笔记(第十五天)

C#基础笔记(第十五天) 1.Directory
//File 文件
Path 路径
FileStream StreamReader StreamWriter 流
Directory 文件夹 目录
//创建文件夹
Directory.CreateDirectory(@"C:\a\b");
Console.WriteLine("创建成功");
Console.ReadKey();
//删除文件夹,文件夹若不是空的,会抛异常,需要再后面加,true强行删除
Directory.Delete(@"c:\a",true);
Console.WriteLine("删除成功");
Console.ReadKey();
//剪切文件夹
Directory.Move(@"c:\a",@"C:\Users\SJD\Desktop\new");
Console.WriteLine("剪切成功");
Console.ReadKey()
//获得指定文件夹下所有的文件的全路径,返回一个string类型的数组
string[] path = Directory.GetFiles(@"C:\Users\SJD\Desktop\picture");
for (int i = 0; i < path.Length; i++)
{
Console.WriteLine(path[i]);
}
Console.ReadKey();
//获得指定文件夹下所有图片的全路径,返回一个string类型的数组(*.格式,没有的也不会抛异常)
string []path = Directory.GetFiles(@"C:\Users\SJD\Desktop\picture", "*.jpg");
for (int i = 0; i < path.Length; i++)
{
Console.WriteLine(path[i]);
}
Console.ReadKey();
//获得指定文件夹下所有文件夹的路径
string []path= Directory.GetDirectories(@"C:\Users\SJD\Desktop\picture");
for (int i = 0; i < path.Length; i++)
{
Console.WriteLine(path[i]);
}
Console.ReadKey();
//判断指定文件夹是否存在,并在目录下创建100个子目录
if(Directory.Exists(@"C:\Users\SJD\Desktop\new"))
{
for (int i = 0; i < 100; i++)
{
Directory.CreateDirectory(@"C:\Users\SJD\Desktop\new\" + i);
}
}
Console.WriteLine("OK");
Console.ReadKey();
Directory 操作文件夹
CreateDirectory 创建文件夹
Delete 删除文件夹
Move 剪切文件夹
Exists 判断文件夹是否存在
GetFiles 获得指定文件夹目录下所有文件的全路径
GetDirectory 获得指定文件夹目录下所有文件夹的全路径
2.浏览器控件 WebBrowser
Url
string text = textBox1.Text;
Uri uri = new Uri("http://"+text);
webBrowser1.Url = uri;
3.ComboBox 下拉框控件
DropDownStyle:控制下拉框的外观样式
名字:cbo+...
private void Form1_Load(object sender, EventArgs e)
{
//程序加载的时候 将年份添加到下拉框中
//获得当前的年份
int year = DateTime.Now.Year;
for (int i = year; i >= 1949; i--)
{
cboYear.Items.Add(i + "年");
}
}
/// <summary>
/// 当年份发生改变的时候 加载月份
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void cboYear_SelectedIndexChanged(object sender, EventArgs e)
{
//添加之前应该清空之前的内容
cboMoon.Items.Clear();
for (int i = 1; i <= 12; i++)
{
cboMoon.Items.Add(i + "月");
}
}
/// <summary>
/// 当月份发生改变的时候 加载天
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void cboMoon_SelectedIndexChanged(object sender, EventArgs e)
{
cboDay.Items.Clear();
int day = 0;//定义一个变量来存储天数
//获得月份
string strMoon = cboMoon.SelectedItem.ToString().Split(new char[] { '月' }, StringSplitOptions.RemoveEmptyEntries)[0];
string strYear = cboYear.SelectedItem.ToString().Split(new char[] { '年' }, StringSplitOptions.RemoveEmptyEntries)[0];
//MessageBox.Show(cboMoon.SelectedItem.ToString());
int year = Convert.ToInt32(strYear);
int moon = Convert.ToInt32(strMoon);
switch(moon)
{
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12: day = 31;
break;
case 2:
if((year%4==0&&year%100!=0)||(year%400==0))
{
day = 29;
}
else
{
day = 28;
}
break;
default:day = 30;
break;
}
for (int i = 1; i <=day; i++)
{
cboDay.Items.Add(i+"日");
}
}
4.点击更换图片
1)、在程序加载的时候,将制定图片文件夹中所有的图片文件名读取到listBox中。
5.剪刀石头布
石头 1 剪刀 2 布 3
玩家赢了: 1-2=-1 2-3=-1 3-1=2
平手: 相减=0
另外一种情况:电脑赢了
比较的时候必须给我返回一个数字
构思
1.在form1上创建6个label(文字),3个button(按钮)
label1(显示 玩家出:) label2(Name改为 lblPlayer(玩家)) label3(显示 电脑出:) label4(Name改为 lblComputer(电脑))
label5(显示 裁判) label6(Name改为 lblResult(结果))
label1和label3 作为玩家和电脑的名称 label2和label4 作为显示玩家和电脑出什么的结果
button1,2,3分别显示为石头,剪刀,布。并且将它们的Name改为btnStone,btnCut,btnBu
2.先做 点击石头的方法
把石头赋值给一个string 类型的字符串str
再把str赋值给玩家。当点击“石头”按钮时,让石头显示在玩家出:的 后面。 lblPlayer.text=str;()
3.做一个玩家玩游戏的方法
创建一个类 Player
在类中创建一个猜拳的方法,放入出拳的string类型,返回Int类型(后面根据数字相减判断) public int ShowFist(string fist)
首先创建一个int类型的num,初值赋予0, 返回num return num;
再在中间创建switch-case类型判断出拳的三种形式返回的int值
switch(fist)
{
case "石头":num = 1;
break;
case "剪刀":num = 2;
break;
case "布":num = 3;
break;
}
4.做一个电脑玩游戏的方法
创建一个类 Computer
在类中创建猜拳的方法,和玩家的猜拳方法一样,但是不用放入string类型的值 public int ShowFist()
首先创建一个random的随机数 random r=new random();
把r的随机数限定在1-3,赋值给一个Int类型的rNumber int rNumber=r.Next(1,4);
现在没有一个东西来存储电脑出的石头,剪刀,布
所以需要单独声明一个字段或属性来存储出的东西,然后赋值给lblComputer
创建一个自动属性来存储出的拳头
public string Fist
{
get;
set;
}
用switch-case来将随机出来的1,2,3判断,把石头,剪刀,布赋值给this.Fist
switch(rNumber)
{
case 1:this.Fist = "石头";
break;
case 2:this.Fist = "剪刀";
break;
case 3:this.Fist = "布";
break;
}
最后返回int 类型的rNumber和玩家相减做判断 return rNumber
5.做一个判断输赢的方法
创建一个类 CaiPan
创建一个静态类 省的创建对象new的那一步,返回3种结果,赢,输,平。可以返回string ,int等等,因为要复习枚举,就用枚举来做
创建一个枚举,把3种结果写进去
public enum Result
{
玩家赢,
电脑赢,
平局
}
静态类写做 public static Result Judge(int playerNumber,int computerNumber)
返回一个Result的枚举类型,传入int类型的玩家和电脑数字来相减判断
用If来进行判断
public static Result Judge(int playerNumber,int computerNumber)
{
if(playerNumber-computerNumber==-1||playerNumber-computerNumber==2)
{
return Result.玩家赢;
}
else if(playerNumber-computerNumber==0)
{
return Result.平局;
}
else
{
return Result.电脑赢;
}
}
6.返回点击石头的方法
接着 先创建一个玩家对象,调用玩家玩游戏的方法,传入string 类型的str,返回一个Int类型的玩家数字
Player player = new Player();
int playerNumber= player.ShowFist(str);
再创建一个电脑对象,调用电脑玩游戏的方法,返回一个Int类型的电脑数字
Computer cpu = new Computer();
int cupNumber= cpu.ShowFist();
给显示界面的lblComputer赋值,让他能显示出什么拳。
lblComputer.Text = cpu.Fist;
调用caipan类的静态方法,比较输赢,返回一个result类型的res结果
Result res= CaiPan.Judge(playerNumber, cpuNumber);
把结果res转为string类型赋值给lblResult,显示在界面的裁判结果上
lblResult.Text = res.ToString();
7.把玩游戏封装成一个方法PlayGame,分别给剪刀,石头
封装
lblPlayer.Text = str;
Player player = new Player();
int playerNumber= player.ShowFist(str);
Computer cpu = new Computer();
int cpuNumber= cpu.ShowFist();
lblComputer.Text = cpu.Fist;
Result res= CaiPan.Judge(playerNumber, cpuNumber);
8.完成
6.打开文件对话框
//点击弹出对话框
OpenFileDialog ofd = new OpenFileDialog();
//设置对话框的标题
ofd.Title = "请选择要打开的文本文件哟╭(╯3╰)╮";
//设置对话框可以多选
ofd.Multiselect = true;
//设置对话框的初始目录
ofd.InitialDirectory = @"C:\Users\SJD\Desktop";
//设置对话框的文件类型
ofd.Filter = "文本|*.txt|媒体|*.wav|图片|*.jpg|所有|*.*";
//展示对话框
ofd.ShowDialog();
//获得在打开对话框中选中文件的路径 返回给string类型全路径
string path = ofd.FileName;
//判断路径为空则返回
if(path=="")
{
return;
}
using (FileStream fsRead = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Read))
{
byte[] buffer = new byte[1024 * 1024 * 5];
//实际读取到的字节数
int r= fsRead.Read(buffer, 0, buffer.Length);
textBox1.Text= Encoding.Default.GetString(buffer, 0, r);
}
7.保存文件对话框
SaveFileDialog sfd = new SaveFileDialog();
sfd.Title = "请选择要保存的路径";
sfd.InitialDirectory = @"C:\Users\SJD\Desktop";
sfd.Filter = "文本文件|*.txt|所有文件|*.*";
sfd.ShowDialog();
string path = sfd.FileName;
if(path=="")
{
return;
}
using (FileStream fsWrite = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write))
{
byte[] buffer = Encoding.Default.GetBytes(textBox1.Text);
fsWrite.Write(buffer, 0, buffer.Length);
}
MessageBox.Show("保存成功");
8.字体和颜色
FontDialog fd = new FontDialog();
fd.ShowDialog();
textBox1.Font= fd.Font;
ColorDialog cd = new ColorDialog();
cd.ShowDialog();
textBox1.ForeColor= cd.Color;
9.进程
我们可以把计算机中每一个运行的应用程序都当做是一个进程。
而一个进程又是由多个线程组成的。
//获得当前程序中所有正在运行的进程
Process[]pros= Process.GetProcesses();
foreach (var item in pros)
{
//结束当前程序中所有进程
//item.Kill()
Console.WriteLine(item);
}
Console.ReadKey();
//通过进程打开一些应用程序
Process.Start("calc");
Process.Start("mspaint");
Process.Start("notepad");
Process.Start("iexplore", "http://www.baidu.com");
//通过一个进程打开指定的文件
//进程打开实例
ProcessStartInfo psi = new ProcessStartInfo(@"C:\Users\SJD\Desktop\AE.txt");
//第一:创建进程对象
Process p = new Process();
p.StartInfo = psi;
p.Start();
10.单线程给我们带来的问题
单线程(主线程)去做一件事情,如果还没做完,再去做另一件事情就做不了,会出现假死的情况
单线程只能去做单一的事情,一复杂就没办法了
//创建一个线程去执行这个方法
Thread th=new Thread(Test);
//标记这个线程准备就绪了,随时可以被执行。具体什么时候执行这个线程,由Cpu决定
th.Start();
***前台线程:只有所有的前台线程都关闭才能完成程序关闭。
***后台线程:只要所有的前台线程结束,后台线程自动结束。
默认情况下,新创建的线程都叫前台线程
所以那个程序要设置为后台线程
//将线程设置为后台线程
th.IsBackground=true;
th.Start();
在.Net下,是不允许跨线程的访问。
可以让应用程序不去检查有没有跨线程访问
//取消跨线程的访问
control是win所有空间的基类
control.checkforillegalcrossthreadcalls=false;
//当你点击关闭窗体的时候,判断新线程是否为null
If(th !=null)
{
//结束这个线程 线程被abort就不能再被start了
th.abort();
}
无法通过代码去操作CPU
运行时----调试---窗口---输出
上一篇文章           查看所有文章
加:2017-11-21 23:21:49  更:2017-11-21 23:21:51 
 
  ASP.NET 最新文章
IIS服务器的请求流程
通过Web Service实现IP地址查询功能
VS 远程调试阿里云上的web站点,Remote Deb
sqlserver的四种分页方式
WebService服务(转)
C#去除字符串中的反斜杠
C# Web应用调试开启外部访问
获取当前iframe动态加载文档的href
Redis 环境搭建与使用(C#)
.net WebService 大数据量时性能的提高
技术频道: 站长资讯 .NET新手区 ASP.NET C# WinForm Silverlight WCF CLR WPF XNA Visual Studio ASP.NET MVC .NET控件开发 Entity Framework WinRT/Metro Java C++ PHP Delphi Python Ruby C语言 Erlang Go Swift Scala R语言 Verilog 其它语言 架构设计 面向对象 设计模式 领域驱动设计 Html/Css JavaScript jQuery HTML5 SharePoint GIS技术 SAP Oracle ERP Dynamics CRM K2 BPM 信息安全 企业信息化其他 Android开发 iOS开发 Windows Phone Windows Mobile 其他手机开发 敏捷开发 项目与团队管理 软件工程其他 SQL Server Oracle MySQL NoSQL 其它数据库 Windows 7 Windows Server Linux
脚本语言: vbs/VBScript DOS/BAT hta htc python perl 游戏相关 VBA 远程脚本 ColdFusion ruby专题 autoit seraphzone PowerShell linux shell Lua Golang Erlang 其它教程
网站开发: CSS/HTML/Xhtml html5 CSS XML/XSLT Dreamweaver教程 经验交流 开发者乐园 Android开发资料
360图书馆 软件开发资料 文字转语音 购物精选 软件下载 美食菜谱 新闻资讯 电影视频 小游戏 Chinese Culture 股票 三丰软件 开发 中国文化 网文精选 阅读网 看图 日历 万年历 2018年8日历
2018-8-14 23:55:25
多播视频美女直播
↓电视,电影,美女直播,迅雷资源↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT知识库