改变应用图标
1.当“解决方案资源管理器”中有项目选中时,在“项目”菜单上单击“属性”。
2.选择“应用程序”窗格。
3.从“图标”下拉列表中选择图标 (.ico) 文件。
2.选择“应用程序”窗格。
3.从“图标”下拉列表中选择图标 (.ico) 文件。
可写:set{return 属性;} 也可直接写作get;
可读:get{属性=value;} 也可直接写作set;
{4
ref 传址 for example:(ref int a);
val 传值 for example:(int a);c#中默认val类型;
out 传值并实例化 for example:(out int a);
}
形参和实参都要加;
重载:形参类型必须不同。
:this 跳转重载构造函数.
for example:
{
public fun(int a,string b)
:this(a,b,"sss")
{
c=a;
d=b;
}
public fun(int a,string b,string h)
{
c=a;
d=b;
j=h;
}
继承:
{
继承的用base,本体的用this;
private类型不可继承;
禁止继承关键字:sealed;
public sealed class ss
}
checkbox 勾选框
checked 是否勾选
清屏:
this.Controls.Clear();
messagebox
返回值为枚举类:
MessageBox.Show("shifuoqingping!") == DialogResult.OK
or
MessageBox.Show("shifuoqingping!") == DialogResult.yes
动态添加控件:
TextBox tb_dtkj = new TextBox();
tb_dtkj.Location = new Point(40, 30);
this.Controls.Add(tb_dtkj);
修改应用图标:icon
第一种:Alt + *(按钮快捷键)
在大家给button、label、menuStrip等控件设置Text属性时在名字后边加&键名就可以了,比如button1.text= "确定(&O)"。就会有快捷键了,这时候按Alt+O就可以执行按钮单击事件。
第二种:Ctrl+*及其他组合键
在WinForm中设置要使用组合键的窗体的KeyPreview(向窗体注册键盘事件)属性为True;
添加鼠标右键菜单:contextmenustrip控件
读取文档:
if (openFileDialog1.ShowDialog()== DialogResult.OK)
{
filepath = openFileDialog1.FileName;
StreamReader ddd = new StreamReader(filepath, Encoding.Default);
richTextBox1.Text = ddd.ReadToEnd();
ddd.Close();
}
StreamWriter sss = new StreamWriter(filepath, false, Encoding.Default);
其中的false是指对重名文件的操作:覆盖。true则是追加:在原有文档后加入本次文档内容;
#resign
#endresign
折叠代码
wordwrap 自动换行 bool类型
paste() 粘贴方法;
调用程序:
很简单,首先引用命名空间
using System.Diagnostics;
然后在程序中:
//参数里写程序路径。
Process.Start(@"c:\windows\system32\notepad.exe");
打包中的卸载文件:msiexec.exe
制作卸载程序:首先获取主程序的唯一标示符,再在卸载程序的属性中arguments中输入“/x+唯一标示符”。
去除安装程序中的计算机名称文件夹的方式:在安装程序中点击“应用程序文件夹”的属性:defaultlocation,去除中间的大括号部分。即{manufacturer}
动态添加控件: public Button newPanelButton = new Button();
Controls.Add(bt);
DateTime dt=DateTime.Now;
获取当前详细时间
dt 为实例化对象;
字符串比较:
string s = "我在";
string d = "你";
Console.WriteLine(string.Compare(s,s));
Console.WriteLine(s.CompareTo(d));
Console.WriteLine(string.Equals(s, d));
字符串函数:
string aaa = Console.ReadLine();
输入字符串;
加密字符串:
#region 加密字符串
/// <summary>
/// 加密字符串
/// </summary>
/// <param name="str">要加密的字符串</param>
/// <returns>加密后的字符串</returns>
static string Encrypt(string str)
{
DESCryptoServiceProvider descsp = new DESCryptoServiceProvider(); //实例化加解密类对象
byte[] key = Encoding.Unicode.GetBytes(encryptKey); //定义字节数组,用来存储密钥
byte[] data = Encoding.Unicode.GetBytes(str); //定义字节数组,用来存储要加密的字符串
MemoryStream MStream = new MemoryStream(); //实例化内存流对象
//使用内存流实例化加密流对象
CryptoStream CStream = new CryptoStream(MStream, descsp.CreateEncryptor(key, key), CryptoStreamMode.Write);
CStream.Write(data, 0, data.Length); //向加密流中写入数据
CStream.FlushFinalBlock(); //释放加密流
return Convert.ToBase64String(MStream.ToArray()); //返回加密后的字符串
}
#endregion
解密字符串:
#region 解密字符串
/// <summary>
/// 解密字符串
/// </summary>
/// <param name="str">要解密的字符串</param>
/// <returns>解密后的字符串</returns>
static string Decrypt(string str)
{
DESCryptoServiceProvider descsp = new DESCryptoServiceProvider(); //实例化加解密类对象
byte[] key = Encoding.Unicode.GetBytes(encryptKey); //定义字节数组,用来存储密钥
byte[] data = Convert.FromBase64String(str); //定义字节数组,用来存储要解密的字符串
MemoryStream MStream = new MemoryStream(); //实例化内存流对象
//使用内存流实例化解密流对象
CryptoStream CStream = new CryptoStream(MStream, descsp.CreateDecryptor(key, key), CryptoStreamMode.Write);
CStream.Write(data, 0, data.Length); //向解密流中写入数据
CStream.FlushFinalBlock(); //释放解密流
return Encoding.Unicode.GetString(MStream.ToArray()); //返回解密后的字符串
}
#endregion
加密字符串完整版代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Security.Cryptography;
using System.IO;
namespace EDString
{
class Program
{
static string encryptKey = "Oyea"; //定义密钥
#region 加密字符串
/// <summary>
/// 加密字符串
/// </summary>
/// <param name="str">要加密的字符串</param>
/// <returns>加密后的字符串</returns>
static string Encrypt(string str)
{
DESCryptoServiceProvider descsp = new DESCryptoServiceProvider(); //实例化加解密类对象
byte[] key = Encoding.Unicode.GetBytes(encryptKey); //定义字节数组,用来存储密钥
byte[] data = Encoding.Unicode.GetBytes(str); //定义字节数组,用来存储要加密的字符串
MemoryStream MStream = new MemoryStream(); //实例化内存流对象
//使用内存流实例化加密流对象
CryptoStream CStream = new CryptoStream(MStream, descsp.CreateEncryptor(key, key), CryptoStreamMode.Write);
CStream.Write(data, 0, data.Length); //向加密流中写入数据
CStream.FlushFinalBlock(); //释放加密流
return Convert.ToBase64String(MStream.ToArray()); //返回加密后的字符串
}
#endregion
#region 解密字符串
/// <summary>
/// 解密字符串
/// </summary>
/// <param name="str">要解密的字符串</param>
/// <returns>解密后的字符串</returns>
static string Decrypt(string str)
{
DESCryptoServiceProvider descsp = new DESCryptoServiceProvider(); //实例化加解密类对象
byte[] key = Encoding.Unicode.GetBytes(encryptKey); //定义字节数组,用来存储密钥
byte[] data = Convert.FromBase64String(str); //定义字节数组,用来存储要解密的字符串
MemoryStream MStream = new MemoryStream(); //实例化内存流对象
//使用内存流实例化解密流对象
CryptoStream CStream = new CryptoStream(MStream, descsp.CreateDecryptor(key, key), CryptoStreamMode.Write);
CStream.Write(data, 0, data.Length); //向解密流中写入数据
CStream.FlushFinalBlock(); //释放解密流
return Encoding.Unicode.GetString(MStream.ToArray()); //返回解密后的字符串
}
#endregion
static void Main(string[] args)
{
Console.Write("请输入要加密的字符串:"); //提示输入字符串
Console.WriteLine(); //换行输入
string strOld = Console.ReadLine(); //记录输入的字符串
string strNew = Encrypt(strOld); //加密字符串
Console.WriteLine("加密后的字符串:" + strNew); //输出加密后的字符串
Console.WriteLine("解密后的字符串:" + Decrypt(strNew)); //解密字符串并输出
Console.ReadLine();
}
}
}
数组创建:
int[,] arr ={
{1,2},{3,4}};
int[] arr = { 1, 2, 3, 45, 56 };
哈希表创建时:必须使用头文件
using System.Collections;
静态方法不能使用this关键字,需使用类名。
实例化结构体:
不使用new关键字;
使用类名 实例化名;
例:struct sss;
构造函数与方法的区别:
1.在C#中,一些都是对象。你要用一个对象,就必须用new来实例化类(static类例外)。当你用new命令时,系统就会自动调用该类的构造函数,做些初始化之类的工作。至于方法,你只能通过手工方式用"object.method()"的方式调用。
2.类中可以没有构造函数,因为没有时,系统会自己帮你生成一个不带参量的空的构造函数,它什么事都不会干,只是因为语法的原因而存在。构造函数是可以重载的(还是过载了,我也记不清这两个概念)。这方法你只能看书了,java和c#上都有讲很多的。
是一类特殊的方法。
他不同于其他方法的地方
一、创建对象时构造函数自动运行,而一般方法必须有调用语句调用才能执行
二、构造函数与类名必须相同(含大小写)
三、构造函数不能有返回值类型
例如
class A
{
public A(){ }//构造函数名与类名相同,没有返回值类型
public string B(){ ...;return "str";}//普通方法要有返回值类型,如无返回值必须写void
}
A aa=new A();//创建对象aa的时候会自动运行类a的构造函数A()
aa.B();//普
2.类中可以没有构造函数,因为没有时,系统会自己帮你生成一个不带参量的空的构造函数,它什么事都不会干,只是因为语法的原因而存在。构造函数是可以重载的(还是过载了,我也记不清这两个概念)。这方法你只能看书了,java和c#上都有讲很多的。
3.堆(stack)和栈(heap)是存储临时数据的地方,就是我们说的缓存吧。对象的字柄是存在heap中的,基本类型(如int,char等)是存在stack中的。stack的速度比heap快。这方面的资料在《thinking in java》和《C#技术内幕(影印版)》中都有说明,《thinking in java》中讲得很详细易懂。
提问:构造函数与方法有何区别?
构造函数就是构造方法,有的地方也叫做构造器。
构造函数名与类名相同,方法是自定义的。
*构造方法是一种特殊的方法,作用是初始化成员变量。
public class Test{
static int i;//定义一个成员变量
public Test(){
i = 10;
}//本句为构造函数,(test和类名相同)作用是初始化成员变量,也可不写,系统将默认一个空的构造函数,如 public Test(){}
void plus(int x,int y){
System.out.println(x+y);
}//定义一个plus方法,意思是传入的数值为int型,传入的个数为2个,传入之后将两个数字相加并打印出。
public static void main(String[] args){
Test t = new Test();//实例化一个对象,
t.plus(1,3);//通过t来调用plus(成员)方法。
System.out.println(i);//打印出i值
}
}
下面是我师父写的:
构造函数就