- 浏览: 2952 次
- 性别:
- 来自: 武汉
文章分类
最新评论
深入.Net框架
1.C#工具安装 .NET Framework 4.0 出现错误解决方法
(1)运行cmd
(2)输入net stop WuAuServ
(3)将X:\Windows\SoftwareDistribution\这个文件夹重命名为SDold 注释 : X 是系统盘
(4)运行cmd,并输入net start WuAuServ
(5)以管理员身份运行.NET Framework 4.0的安装程序
第一章
(1).Ping地址是否畅通
using System.Net.NetworkInformation //引用此命名空间
Ping pingsender = new Ping(); //New此对象
PingReply reply = pingsender.Send(this.txtIP.Text.ToString()); //根据填写的ip地址 , 去测试是否畅通,返回一个状态
if (reply.Status == IPStatus.Success) //如果状态等于畅通 ,接下来你懂得
(2)网络上下载图片(要求有网络)
using System.Net;
using System.IO; //引用命名空间
string address = " http://titanimg.titan24.com/game/20110808/10ae4ffd5a81d639ed5518acda8a7862.jpg"; //图片网站地址
string pictureaddress = "10ae4ffd5a81d639ed5518acda8a7862.jpg";//图片文件名
try
{
WebClient web = new WebClient(); //创建此对象
if (!File.Exists(pictureaddress)) //如果已经下载此图片 就不会再下载了
{
web.DownloadFile(address, pictureaddress); //对象的下载方法,
}
this.picTu.Image = Image.FromFile(pictureaddress); //把图片路径给当前的图片控件
(3)窗体上显示网页
URL.StartsWith("http://") && URL.StartsWith("https://") 首先判断输入的地址是否包含http
web.Navigate(URL);//设置控件的地址
第二章
(1) struct结构
public struct st
{
//结构体 结构中可以有字段也可以有方法。 字段不能赋初始值
}
public Main () //另一个方法中使用它
{
st s; 创建它 无须用New
}
(2)params 当不知道具体要几个参数时
public static int AddNumber(params int[] arr)
{
return arr;
}
//另一个方法调用上面方法时
{
AddNumber(1,3,2); //可以传任何个数的参数
AddNumber(1,2); tnn
}
第三章 (5种集合的增删查 使用方法) using System.Collections
(1)集合
public static ArrayList list = new ArrayList(); // 声明
list.Capacity 属性 指list存贮空间大小 动态的 超出就翻倍扩展
list.Tro,TpSoze(); 去掉多余空间
list.add(object); //添加一个对象
list.RemoveAt(int) //移除指定下标的对象
object o =(object)list[0]; //获取指定下标的对象,然后你懂得
foreach (object c in list) { }//获取集合里的全部值
(2)哈希集合(可以通过键来查询指定元素)
public static Hashtable li = new Hashtable(); //声明
li.add(键类型变量,object); //键代表这个对象的唯一列 能区分每个对象的,可以是任何数据类型
li.Remove(键类型变量); //通过键来删除指定的对象
object c = li[键类型变量]; //通过键 来获取指定对象
foreach (object o in li.Keys) {} //获取集合里的全部键
foreach (object o in li.values){} //获取集合李的全部值
li.Contains(键类型变量) //判断是否包含这个键的对象
(3)泛型集合,数据更稳定安全
public static List<T> list1 = new List<T>(); //声明 T代表任意数据类型
list1.Add(T类型变量); //添加只能添加这个数据类型的变量 ,添加其他的会直接报错
list1.RemoveAt(indenx); //移除指定下标的对象
list1.Remove(T类型变量); //移除只能移除这个数据类型的变量 ,移除其他的会直接报错
T类型 b = list1[0]; //获取指定下标对象,不需要转换了,T同上
foreach(T类型 d in list1){ } //获取集合里的每个对象, T同上
(4)泛型哈希集合(可以通过键来查询指定元素) 数据更安全
public static Dictionary<K, V> li2 = new Dictionary<K, V>(); //声明 K代表集合中Key(键)数据类型,V代表Value(值)的数据类型 同(2)
li2.Add(K类型变量,V类型变量); //添加 必须以K类型的变量和V类型的变量来添加
li2.Remove(K类型变量); //删除 必须以K类型的变量来删除指定对象!
V类型 p = li2[K变量]; // 根据Key键 获取指定的对象
foreach (V类型 v in li2.Keys) { } //获取集合里的全部键
foreach (V类型 v in li2.Values) { }//获取集合李的全部值
(5)泛型类
public class MyStruct<T>
{ public T number}
MyStruct<int> my = new MyStruct<int>();
(6)二维 三维数组
int[,] arr1 = new int[2,3]{{1,2,3},
{4,5,6}}; 对等2维数组
int[][] arr2 = new int[2][];
//交错二维数组
int[][] arr2 = new int[2][];
arr2[0] = new int[] { 1, 2, 3 };
arr2[1] = new int[] { 4, 5 };
//小于数组行数
for (int i = 0; i < arr2.GetLength(0); i++)
{ //小于每行的长度(个数)
for (int j = 0; j < arr2[i].Length; j++)
{
Console.Write("\t{0}",arr2[i][j]);
}
Console.WriteLine();
}
(6) 随机数种子
Random rd = new Random(DateTime.Now.Millisecond* DateTime.Now.Second); //随机种子
rd.Next(1000, 10000);
第4章
(1) 构造函数, //注: 就是实例化对象就默认赋的初始值
public 类名()
{
赋值。。。
}
(2) 方法重载, 就是在一个类中写名称相同的方法 但是参数列表必须不同 如:
public void show(int num1,int num2){}
public void show(string num1,string num2){}
第6章
(1) 继承
class Violin : Instrument 前面是子类 后面继承父类 继承后拥有父类的属性方法
(2)构造函数继承
//父类 public Employee(int Age,Gender Sex,string ID,string Name, List<Job> WorkList)
{
this.Age = Age;
this.Sex = Sex;
this.ID = ID;
this.Name = Name;
this.WorkList = WorkList;
}
//子类 public PM(int Age,Gender Sex,string ID,string Name, List<Job> WorkList,int Year)
:base(Age,Sex,ID,Name,WorkList)
{
this.YearOfExperience = Year;
}
不需要再一一赋值 可以直接传递值,子类自己的字段需要赋值
base --- 父类对象
(3)修饰符
修饰符 类内部 子类 其他类
public YES YES YES
protected YES YES NO
private YES NO NO
internal 只能被当前程序集中的成员访问 不能被其他程序集的成员访问
protected internal (保护的与程序集的:可以被当前的累或者他的子类访问,也可以被当前的程序集中的成员访问,而不能被其他程序集中无关的类访问)
(4)继承的传递性
class a
class b:a
class c:b
c同样具有a的东西
(5)override , virtual 虚方法
第7章
abstract 抽象方法
抽象方法必须包含在抽象类里面
sealed 密封方法 或者密封类
sealed public overrude void Save() 加上关键字sealed 他就是最终方法 不能被子类所重写
(1) 接口的定义
public interface IFly
{
void Fly();
}
接口中只能包含
1.抽象的属性
2.抽象的方法
3.抽象的索引器
4.抽象的事件
接口中不能包括字段和常量
(2)反射
using System.Reflection; 引用这个
string className = "Demo8_2." + factoryType + "Factory";
//Load方法表示要加载的程序集
//CreateInstance方法表示要在那个程序集上去创建的命名空间中的某个类对象。
facotry = (AnimalFactory)Assembly.Load("Demo8_2").CreateInstance(className);
(3)添加节点
tvStudent.Nodes.Clear();
foreach (Student b in Student.analyze())
{
reeNode tn = new TreeNode(b.StudentName);
n.Nodes.Add(b.Age.ToString());
tn.Nodes.Add(b.Hobby);
his.tvStudent.Nodes.Add(tn);
}
第11章 文件操作 using System.IO;
1.(写入文件内容)
//创建文件流
FileStream fs = new FileStream(this.textBox1.Text, FileMode.Create);
//创建写入器
StreamWriter sw = new StreamWriter(fs);
//将录入的内容写入文件
sw.Write(this.textBox2.Text);
//关闭写入器
sw.Close();
//关闭文件流
fs.Close(); //FileStream 的第1个参数是文件的路径,第二个是打开文件的类型(枚举型)
//StreamWriter和StreamReader第1个参数是文件流对象,
//Encoding是编码对象,他的枚举是编码类型。解决乱码问题 如:
UTF8(系统默认) ASCII GB2312 ANSI
2.(读取文件内容)
//创建文件流
FileStream fs = new FileStream(this.textBox1.Text, FileMode.Open); 加属性, FileA
Ccess.Read ?? FileShare.None //对文件的占用性
//创建读取器
StreamReader sr = new StreamReader(fs, Encoding.Default);
//将读取的内容写入程序
this.textBox2.Text = sr.ReadToEnd();
//关闭读取器
sr.Close();
//关闭文件流
fs.Close();
3.(目录[文件夹]和文件操作)
DirectoryInfo di = new DirectoryInfo("D:\\"); //获取这个文件夹 参数是文件夹路径
FileInfo[] fi = di.GetFiles(); //获取这个文件夹下的所有文件
DirectoryInfo[] dire = di.GetDirectories(); //获取这个文件夹下的所有文件夹
foreach (FileInfo f in fi)
{
MyFile mf = new MyFile();
mf.FileName = f.Name; //文件名
mf.FileLength = float.Parse(Math.Round((double)(f.Length / 1024), 2).ToString()); // 大小
mf.FileType = f.Extension; //获取文件扩展名部分字符串
mf.FilePath = f.FullName;// 获取文件或文件夹完整路径
list.Add(mf);
}
Exists 判断文件或者文件夹是否存在,
string[] logicalDrives = Directory.GetLogicalDrives(); 获取所有盘符
4 以字节流来读取数据
fs = new FileStream(this.txtFileName.Text, FileMode.Open);
byte[] bytes = new byte[fs.Length];
fs.Read(bytes, 0, bytes.Length);
System.Text.Encoding encode = System.Text.Encoding.UTF8;
string s=encode.GetString(bytes);
this.txtContent.Text = s;ok
12章 序列化 反序列化
1.(序列化对象)
注意:1.保存的文件格式后缀需是bin
2.要保存的对象和他关联的对象必须给它设置特性 [Serializable]
FileStream fs = new FileStream("save.bin", FileMode.Create);
//二进制方式
BinaryFormatter bf = new BinaryFormatter();
//序列化存贮对象
bf.Serialize(fs, this.seria);
fs.Close();
2(反序列化还原对象)
FileStream fs = new FileStream("save.bin", FileMode.Open);
BinaryFormatter bf = new BinaryFormatter();
//把对象还原成object形, 强转就OK了。 数据和序列化之前一样
this.seria =(SavingInfo)bf.Deserialize(fs);
fs.Close();
3(特性) . 特性就是在 类 方法 字段前面加 [XXXX]
[Serializable] //标识可序列化
[Obsolete("不要使用旧的方法。",True)] //标识此方法或类已经过期。。。第二个bool参数为真 就会报错。 为假 则出警告
[NonSerialized] //标识不可序列化
4(克隆) ICloneable 接口 , MemberwiseClone();//克隆某个对象!
(1).实现这个接口,里面写具体的克隆方法
5.(动态加载控件和绑定事件)
private List<Remind> List = new List<Remind>();
public void SetRemind(List<Remind> list)
{
this.List = list;
int startX = 100; //设置控件的X坐标
int startY = this.lblMessage.Location.Y + lblMessage.Height + 5; //设置控件的Y坐标
int i = 0;//循环用变量
int resizeHeight = 25;//窗体的高度
foreach (Remind tv in list)
{
this.Height += resizeHeight;
Label lb = new Label(); //创建一个lbl
lb.Text = tv.tvProgram.ProgramName;//设置lbl的文本值
lb.Tag = tv; //设置lbl的Tag值
lb.ForeColor = System.Drawing.Color.Red; //设置lbl的文字颜色 (可以从自动生成代码处复制)
lb.Visible = true; //设置lbl是否可见
lb.Width = 350; //设置lbl的宽度
lb.Font = new System.Drawing.Font("隶书", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); //设置lbl的字体(可以从自动生成代码处复制)
lb.Location = new Point(startX, startY + i * (5 + lb.Height));//设置lbl的位置
this.Controls.Add(lb); //当前窗体的添加控件方法 , 把lbl添加进去
lb.Click += new EventHandler(lb_Click); //动态绑定事件 代码打到=符号的时候 按两次Tab键 OK了
i++;
}
}
public void lb_Click(object sender, EventArgs e)
{
Label lb = sender as Label; //sender就是当前选中的控件对象 e是当前选择控件的描述
frmMain.fb.awmBoF.URL = (lb.Tag as Remind).tvProgram.Way;
frmMain.fb.Show();
}
14章 影院售票系统
1.(枚举类型的转换)
//把字符串转换为枚举类型 第1个参数是枚举类型,第2个是要转换得字符串,返回object型
m.movieType = (Movie.MovieType)Enum.Parse(typeof(Movie.MovieType), node["Type"].InnerText);
//把枚举转换为字符串
this.lblMovieTypeShow.Text = si.movie.movieType.ToString();
2.(断言) using System.Diagnostics; //引用命名空间
Debug.Assert() 方法断言 如果断言失败 则程序退出。
3.(条件编译) 结构和if else if 很相似
#define D 定义符号
#define V
#if(D&&V) //如果此符号存在则为True 则运行该代码段
Console.Write(1);
#elif(!D&&V)
Console.Write(2);
#elif(D&&!V)
Console.Write(3);
#else
Console.Write(4);
#endif //结束
(1)运行cmd
(2)输入net stop WuAuServ
(3)将X:\Windows\SoftwareDistribution\这个文件夹重命名为SDold 注释 : X 是系统盘
(4)运行cmd,并输入net start WuAuServ
(5)以管理员身份运行.NET Framework 4.0的安装程序
第一章
(1).Ping地址是否畅通
using System.Net.NetworkInformation //引用此命名空间
Ping pingsender = new Ping(); //New此对象
PingReply reply = pingsender.Send(this.txtIP.Text.ToString()); //根据填写的ip地址 , 去测试是否畅通,返回一个状态
if (reply.Status == IPStatus.Success) //如果状态等于畅通 ,接下来你懂得
(2)网络上下载图片(要求有网络)
using System.Net;
using System.IO; //引用命名空间
string address = " http://titanimg.titan24.com/game/20110808/10ae4ffd5a81d639ed5518acda8a7862.jpg"; //图片网站地址
string pictureaddress = "10ae4ffd5a81d639ed5518acda8a7862.jpg";//图片文件名
try
{
WebClient web = new WebClient(); //创建此对象
if (!File.Exists(pictureaddress)) //如果已经下载此图片 就不会再下载了
{
web.DownloadFile(address, pictureaddress); //对象的下载方法,
}
this.picTu.Image = Image.FromFile(pictureaddress); //把图片路径给当前的图片控件
(3)窗体上显示网页
URL.StartsWith("http://") && URL.StartsWith("https://") 首先判断输入的地址是否包含http
web.Navigate(URL);//设置控件的地址
第二章
(1) struct结构
public struct st
{
//结构体 结构中可以有字段也可以有方法。 字段不能赋初始值
}
public Main () //另一个方法中使用它
{
st s; 创建它 无须用New
}
(2)params 当不知道具体要几个参数时
public static int AddNumber(params int[] arr)
{
return arr;
}
//另一个方法调用上面方法时
{
AddNumber(1,3,2); //可以传任何个数的参数
AddNumber(1,2); tnn
}
第三章 (5种集合的增删查 使用方法) using System.Collections
(1)集合
public static ArrayList list = new ArrayList(); // 声明
list.Capacity 属性 指list存贮空间大小 动态的 超出就翻倍扩展
list.Tro,TpSoze(); 去掉多余空间
list.add(object); //添加一个对象
list.RemoveAt(int) //移除指定下标的对象
object o =(object)list[0]; //获取指定下标的对象,然后你懂得
foreach (object c in list) { }//获取集合里的全部值
(2)哈希集合(可以通过键来查询指定元素)
public static Hashtable li = new Hashtable(); //声明
li.add(键类型变量,object); //键代表这个对象的唯一列 能区分每个对象的,可以是任何数据类型
li.Remove(键类型变量); //通过键来删除指定的对象
object c = li[键类型变量]; //通过键 来获取指定对象
foreach (object o in li.Keys) {} //获取集合里的全部键
foreach (object o in li.values){} //获取集合李的全部值
li.Contains(键类型变量) //判断是否包含这个键的对象
(3)泛型集合,数据更稳定安全
public static List<T> list1 = new List<T>(); //声明 T代表任意数据类型
list1.Add(T类型变量); //添加只能添加这个数据类型的变量 ,添加其他的会直接报错
list1.RemoveAt(indenx); //移除指定下标的对象
list1.Remove(T类型变量); //移除只能移除这个数据类型的变量 ,移除其他的会直接报错
T类型 b = list1[0]; //获取指定下标对象,不需要转换了,T同上
foreach(T类型 d in list1){ } //获取集合里的每个对象, T同上
(4)泛型哈希集合(可以通过键来查询指定元素) 数据更安全
public static Dictionary<K, V> li2 = new Dictionary<K, V>(); //声明 K代表集合中Key(键)数据类型,V代表Value(值)的数据类型 同(2)
li2.Add(K类型变量,V类型变量); //添加 必须以K类型的变量和V类型的变量来添加
li2.Remove(K类型变量); //删除 必须以K类型的变量来删除指定对象!
V类型 p = li2[K变量]; // 根据Key键 获取指定的对象
foreach (V类型 v in li2.Keys) { } //获取集合里的全部键
foreach (V类型 v in li2.Values) { }//获取集合李的全部值
(5)泛型类
public class MyStruct<T>
{ public T number}
MyStruct<int> my = new MyStruct<int>();
(6)二维 三维数组
int[,] arr1 = new int[2,3]{{1,2,3},
{4,5,6}}; 对等2维数组
int[][] arr2 = new int[2][];
//交错二维数组
int[][] arr2 = new int[2][];
arr2[0] = new int[] { 1, 2, 3 };
arr2[1] = new int[] { 4, 5 };
//小于数组行数
for (int i = 0; i < arr2.GetLength(0); i++)
{ //小于每行的长度(个数)
for (int j = 0; j < arr2[i].Length; j++)
{
Console.Write("\t{0}",arr2[i][j]);
}
Console.WriteLine();
}
(6) 随机数种子
Random rd = new Random(DateTime.Now.Millisecond* DateTime.Now.Second); //随机种子
rd.Next(1000, 10000);
第4章
(1) 构造函数, //注: 就是实例化对象就默认赋的初始值
public 类名()
{
赋值。。。
}
(2) 方法重载, 就是在一个类中写名称相同的方法 但是参数列表必须不同 如:
public void show(int num1,int num2){}
public void show(string num1,string num2){}
第6章
(1) 继承
class Violin : Instrument 前面是子类 后面继承父类 继承后拥有父类的属性方法
(2)构造函数继承
//父类 public Employee(int Age,Gender Sex,string ID,string Name, List<Job> WorkList)
{
this.Age = Age;
this.Sex = Sex;
this.ID = ID;
this.Name = Name;
this.WorkList = WorkList;
}
//子类 public PM(int Age,Gender Sex,string ID,string Name, List<Job> WorkList,int Year)
:base(Age,Sex,ID,Name,WorkList)
{
this.YearOfExperience = Year;
}
不需要再一一赋值 可以直接传递值,子类自己的字段需要赋值
base --- 父类对象
(3)修饰符
修饰符 类内部 子类 其他类
public YES YES YES
protected YES YES NO
private YES NO NO
internal 只能被当前程序集中的成员访问 不能被其他程序集的成员访问
protected internal (保护的与程序集的:可以被当前的累或者他的子类访问,也可以被当前的程序集中的成员访问,而不能被其他程序集中无关的类访问)
(4)继承的传递性
class a
class b:a
class c:b
c同样具有a的东西
(5)override , virtual 虚方法
第7章
abstract 抽象方法
抽象方法必须包含在抽象类里面
sealed 密封方法 或者密封类
sealed public overrude void Save() 加上关键字sealed 他就是最终方法 不能被子类所重写
(1) 接口的定义
public interface IFly
{
void Fly();
}
接口中只能包含
1.抽象的属性
2.抽象的方法
3.抽象的索引器
4.抽象的事件
接口中不能包括字段和常量
(2)反射
using System.Reflection; 引用这个
string className = "Demo8_2." + factoryType + "Factory";
//Load方法表示要加载的程序集
//CreateInstance方法表示要在那个程序集上去创建的命名空间中的某个类对象。
facotry = (AnimalFactory)Assembly.Load("Demo8_2").CreateInstance(className);
(3)添加节点
tvStudent.Nodes.Clear();
foreach (Student b in Student.analyze())
{
reeNode tn = new TreeNode(b.StudentName);
n.Nodes.Add(b.Age.ToString());
tn.Nodes.Add(b.Hobby);
his.tvStudent.Nodes.Add(tn);
}
第11章 文件操作 using System.IO;
1.(写入文件内容)
//创建文件流
FileStream fs = new FileStream(this.textBox1.Text, FileMode.Create);
//创建写入器
StreamWriter sw = new StreamWriter(fs);
//将录入的内容写入文件
sw.Write(this.textBox2.Text);
//关闭写入器
sw.Close();
//关闭文件流
fs.Close(); //FileStream 的第1个参数是文件的路径,第二个是打开文件的类型(枚举型)
//StreamWriter和StreamReader第1个参数是文件流对象,
//Encoding是编码对象,他的枚举是编码类型。解决乱码问题 如:
UTF8(系统默认) ASCII GB2312 ANSI
2.(读取文件内容)
//创建文件流
FileStream fs = new FileStream(this.textBox1.Text, FileMode.Open); 加属性, FileA
Ccess.Read ?? FileShare.None //对文件的占用性
//创建读取器
StreamReader sr = new StreamReader(fs, Encoding.Default);
//将读取的内容写入程序
this.textBox2.Text = sr.ReadToEnd();
//关闭读取器
sr.Close();
//关闭文件流
fs.Close();
3.(目录[文件夹]和文件操作)
DirectoryInfo di = new DirectoryInfo("D:\\"); //获取这个文件夹 参数是文件夹路径
FileInfo[] fi = di.GetFiles(); //获取这个文件夹下的所有文件
DirectoryInfo[] dire = di.GetDirectories(); //获取这个文件夹下的所有文件夹
foreach (FileInfo f in fi)
{
MyFile mf = new MyFile();
mf.FileName = f.Name; //文件名
mf.FileLength = float.Parse(Math.Round((double)(f.Length / 1024), 2).ToString()); // 大小
mf.FileType = f.Extension; //获取文件扩展名部分字符串
mf.FilePath = f.FullName;// 获取文件或文件夹完整路径
list.Add(mf);
}
Exists 判断文件或者文件夹是否存在,
string[] logicalDrives = Directory.GetLogicalDrives(); 获取所有盘符
4 以字节流来读取数据
fs = new FileStream(this.txtFileName.Text, FileMode.Open);
byte[] bytes = new byte[fs.Length];
fs.Read(bytes, 0, bytes.Length);
System.Text.Encoding encode = System.Text.Encoding.UTF8;
string s=encode.GetString(bytes);
this.txtContent.Text = s;ok
12章 序列化 反序列化
1.(序列化对象)
注意:1.保存的文件格式后缀需是bin
2.要保存的对象和他关联的对象必须给它设置特性 [Serializable]
FileStream fs = new FileStream("save.bin", FileMode.Create);
//二进制方式
BinaryFormatter bf = new BinaryFormatter();
//序列化存贮对象
bf.Serialize(fs, this.seria);
fs.Close();
2(反序列化还原对象)
FileStream fs = new FileStream("save.bin", FileMode.Open);
BinaryFormatter bf = new BinaryFormatter();
//把对象还原成object形, 强转就OK了。 数据和序列化之前一样
this.seria =(SavingInfo)bf.Deserialize(fs);
fs.Close();
3(特性) . 特性就是在 类 方法 字段前面加 [XXXX]
[Serializable] //标识可序列化
[Obsolete("不要使用旧的方法。",True)] //标识此方法或类已经过期。。。第二个bool参数为真 就会报错。 为假 则出警告
[NonSerialized] //标识不可序列化
4(克隆) ICloneable 接口 , MemberwiseClone();//克隆某个对象!
(1).实现这个接口,里面写具体的克隆方法
5.(动态加载控件和绑定事件)
private List<Remind> List = new List<Remind>();
public void SetRemind(List<Remind> list)
{
this.List = list;
int startX = 100; //设置控件的X坐标
int startY = this.lblMessage.Location.Y + lblMessage.Height + 5; //设置控件的Y坐标
int i = 0;//循环用变量
int resizeHeight = 25;//窗体的高度
foreach (Remind tv in list)
{
this.Height += resizeHeight;
Label lb = new Label(); //创建一个lbl
lb.Text = tv.tvProgram.ProgramName;//设置lbl的文本值
lb.Tag = tv; //设置lbl的Tag值
lb.ForeColor = System.Drawing.Color.Red; //设置lbl的文字颜色 (可以从自动生成代码处复制)
lb.Visible = true; //设置lbl是否可见
lb.Width = 350; //设置lbl的宽度
lb.Font = new System.Drawing.Font("隶书", 15.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); //设置lbl的字体(可以从自动生成代码处复制)
lb.Location = new Point(startX, startY + i * (5 + lb.Height));//设置lbl的位置
this.Controls.Add(lb); //当前窗体的添加控件方法 , 把lbl添加进去
lb.Click += new EventHandler(lb_Click); //动态绑定事件 代码打到=符号的时候 按两次Tab键 OK了
i++;
}
}
public void lb_Click(object sender, EventArgs e)
{
Label lb = sender as Label; //sender就是当前选中的控件对象 e是当前选择控件的描述
frmMain.fb.awmBoF.URL = (lb.Tag as Remind).tvProgram.Way;
frmMain.fb.Show();
}
14章 影院售票系统
1.(枚举类型的转换)
//把字符串转换为枚举类型 第1个参数是枚举类型,第2个是要转换得字符串,返回object型
m.movieType = (Movie.MovieType)Enum.Parse(typeof(Movie.MovieType), node["Type"].InnerText);
//把枚举转换为字符串
this.lblMovieTypeShow.Text = si.movie.movieType.ToString();
2.(断言) using System.Diagnostics; //引用命名空间
Debug.Assert() 方法断言 如果断言失败 则程序退出。
3.(条件编译) 结构和if else if 很相似
#define D 定义符号
#define V
#if(D&&V) //如果此符号存在则为True 则运行该代码段
Console.Write(1);
#elif(!D&&V)
Console.Write(2);
#elif(D&&!V)
Console.Write(3);
#else
Console.Write(4);
#endif //结束
相关推荐
北大青鸟 二期深入.NET框架 第一章 概念以及实验 案例补充 参考资料 提供学员的资料 PPT 作业答案
C#第一章 深入.Net框架学习方法技巧C#第一章 深入.Net框架学习方法技巧C#第一章 深入.Net框架学习方法技巧C#第一章 深入.Net框架学习方法技巧C#第一章 深入.Net框架学习方法技巧C#第一章 深入.Net框架学习方法技巧C#...
深入.NET框架下开发三层结构数据库应用系统
.NET入门经典.NET源代码,让你轻松入门
本书是《微软.NET程序员系列》丛书之一,主要介绍如何开发面向Microsoft.NET框架的各种应用程序。Microsoft.NET框架是微软公司推出的新平台,包含通用语言运行时(CLR)和.NET框架类库(FCL)。本书将深入解释CLR的工作...
在 .NET 框架下开发三层结构数据库应用系统(ADO.NE... 3. 授课次序 T 1 L 1 T 2 L 2 T 3 L 3 T 4 L 4 T 5 L 5 DLC 1 T 6 L 6 T 7 L 7 DLC 2 T 8 L 8 T 9 L 9 DLC 3 ...
有关.net的一些基础知识,学习的时候记录。
在本节中,将带领大家去深入了解ASP.NET架构,包括一个HTTP请求的生命周期、HttpModule是如何工作的等。
Microsoft.NET框架程序设计.part2(扫描清晰版,共3个压缩包) 主要介绍如何开发面向Microsoft .NET框架的各种应用程序。Microsoft .NET框架是微软公司推出的新平台,包含通用语言运行时(CLR)和.NET框架类库(FCL)。...
在这个系列 中,我仅仅利用Sping.net这个框架向大家展示一下Ioc与AOP的强大功能(呵呵,其实写这段话的目的是因为“文章题目”牛皮吹得有点大了,给自 己个台阶下罢了)。 在这个系列中一共包含6个案例,从简单到...
在深入进行.Net框架下的XML文档的操作之前,我想很有必要向大家介绍.Net框架中与XML技术有关的命名空间和其中一些重要的类。.Net框架为我们提供了以下一些命名空间:System.Xml、System.Xml.Schema、System.Xml....
适合asp.net开发的后台框架模板 EasyUI是一组基于jQuery的UI插件集合体,而jQuery EasyUI的目标就是帮助web开发者更轻松的打造出功能丰富并且美观的UI界面。开发者不需要编写复杂的javascript,也不需要对css样式有...
微软.NET经典原装系列,深入了解.NET底层框架必备之书
Microsoft.NET框架程序设计(修订版) PDG电子版文件 学习.NET 必读书 否则就不叫懂DotNet,这本书的有些内容初学者可能有点看不懂,不过没关系,随着以后的深入,就能明白
微软.NET经典原装系列,深入了解.NET底层框架必备之书 请关注我上传的.NET Framework系列。
微软.NET经典原装系列,深入了解.NET底层框架必备之书 请关注我上传的.NET Framework系列。
Microsoft.NET框架程序设计(修订版) PDG电子版文件 学习.NET 必读书 否则就不叫懂DotNet,这本书的有些内容初学者可能有点看不懂,不过没关系,随着以后的深入,就能明白 (!***需要用PDG文件阅读器打开***!)
本书有助于了解.net 本质,对深入学习.net编程有很大帮助。
进而对.net的DDD设计模式有想更深入的了解。 适合人群: 具备一定编程基础,工作1年的研发人员 能学到什么: ①依赖注入模式、O/RM对象映射模式; ②IOC、循环依赖都是如何设计和实现的。 阅读建议: 此资源以开发...