一、改变窗口大小,控件大小也按比例变化(在load事件里调用下就行了,已验证过的)
/// <summary>
/// 控件随窗体自动缩放
/// </summary>
/// <param name="frm">Form</param>
public static void AutoScale(Form frm)
{
frm.Tag = frm.Width.ToString() + "," + frm.Height.ToString();
frm.SizeChanged += new EventHandler(frm_SizeChanged);
}
static void frm_SizeChanged(object sender, EventArgs e)
{
string[] tmp = ((Form)sender).Tag.ToString().Split(',');
float width = (float)((Form)sender).Width / (float)Convert.ToInt16(tmp[0]);
float heigth = (float)((Form)sender).Height / (float)Convert.ToInt16(tmp[1]);
((Form)sender).Tag = ((Form)sender).Width.ToString() + "," + ((Form)sender).Height;
foreach (Control control in ((Form)sender).Controls)
{ control.Scale(new SizeF(width, heigth)); }
}
二、加密解密
1、MD5
public static string GetMD5Hash(String input)
{
MD5 md5 = new MD5CryptoServiceProvider();
byte[] res = md5.ComputeHash(Encoding.Default.GetBytes(input), 0, input.Length);
char[] temp = new char[res.Length];
System.Array.Copy(res, temp, res.Length);
return new String(temp);
}
/// <summary>
/// 获得MD5的16进制结果
/// </summary>
/// <param name="input"></param>
/// <returns></returns>
public static string GetMD5HashHex(String input)
{
MD5 md5 = new MD5CryptoServiceProvider();
DES des = new DESCryptoServiceProvider();
byte[] res = md5.ComputeHash(Encoding.Default.GetBytes(input), 0, input.Length);
String returnThis = "";
for (int i = 0; i < res.Length; i++)
{
returnThis += System.Uri.HexEscape((char)res[i]);
}
returnThis = returnThis.Replace("%", "");
returnThis = returnThis.ToLower();
return returnThis;
}
md5一般是用来加密密码的。是不可逆的。
/// <summary>
/// 获取MD5值
/// </summary>
/// <param name="str">加密的字符串</param>
/// <returns>返回MD5值</returns>
public static string GetMD5(string str)
{
return System.Web.Security.FormsAuthentication.HashPasswordForStoringInConfigFile(str, "MD5");
}
2、要是可以加密可以解密的建议用base64
编码:
byte[] bytes=Encoding.Default.GetBytes("要转换的字符串");
Convert.ToBase64String(bytes);
解码:
//"ztKwrsTj"是“我爱你”的base64编码
byte[] outputb = Convert.FromBase64String("ztKwrsTj");
string orgStr= Encoding.Default.GetString(outputb);
三、正则表达式
1、匹配金额的:
/^/d{1,3}(/,/d{3})*/./d{2}$/
匹配情况
X.XX
XX.XX
XXX.XX
X,XXX,...,XXX.XX
XX,XXX,...,XXX.XX
XXX,XXX,...,XXX.XX
/^/d{1,3}(/,/d{3})*(/./d{2})?$/
还匹配
X
XX
XXX
X,XXX,...,XXX
XX,XXX,...,XXX
XXX,XXX,...,XXX