public static string Escape(string str)
{
if (str == null)
return String.Empty;
StringBuilder sb = new StringBuilder();
int len = str.Length;
for (int i = 0; i <len; i++)
{
char c = str[i];
//everything other than the optionally escaped chars _must_ be escaped
if (Char.IsLetterOrDigit(c) || c == '-' || c == '_' || c == '/' || c == '\\' || c == '.')
sb.Append(c);
else
sb.Append(Uri.HexEscape(c));
}
return sb.ToString();
}
public static string UnEscape(string str)
{
if (str == null)
return String.Empty;
StringBuilder sb = new StringBuilder();
int len = str.Length;
int i = 0;
while (i != len)
{
if (Uri.IsHexEncoding(str, i))
sb.Append(Uri.HexUnescape(str, ref i));
else
sb.Append(str[i++]);
}
return sb.ToString();
}
2009年9月12日
C# JS的Escape和UnEscape *0*
2009年9月6日
C# 用WMI控制開機重啟
ref system.management
重啟 Reboot
using system.management;
ManagementClass mc_os = new ManagementClass("Win32_OperatingSystem");
mc_os.Scope.Options.EnablePrivileges = true;
foreach (ManagementObject mo in mc_os.GetInstances())
{
mo.InvokeMethod("Shutdown", null, null);
}
mc_os.Dispose();
重啟 Reboot
2009年8月30日
C# Format
C#:
1.補0
String.Format("{0:0000}", 157); // 輸出 0157
2.前後補0
String.Format("{0:0000.0000}", 157.42); // 輸出 0157.4200
3.每3位加逗號
(String.Format("{0:0,0}", 38560); // 輸出 38,560
4.格式化電話號碼
(String.Format("{0:(###) ###-####}", 8005551212); // 輸出 (800) 555-1212
1.補0
String.Format("{0:0000}", 157); // 輸出 0157
2.前後補0
String.Format("{0:0000.0000}", 157.42); // 輸出 0157.4200
3.每3位加逗號
(String.Format("{0:0,0}", 38560); // 輸出 38,560
4.格式化電話號碼
(String.Format("{0:(###) ###-####}", 8005551212); // 輸出 (800) 555-1212
C# 我愛自動完成~~
DataAdapter1.Fill(DataDS1, "data"); foreach (DataRow dr1 in DataDS1.Tables["data"].Rows) { textBox1.AutoCompleteCustomSource.Add(dr1[0].ToString()); } textBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend; textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
以上~~~然後在TEXTBOX1上輸入的時候~~~就會變得超帥氣!!!
有點類似GOOGLE的自動搜尋 自動完成之類的~~~~
唷呼!!! ^0^
2009年8月22日
2009年8月11日
2009年8月7日
C# 使用 WebBrowser 取得網頁原始碼
webBrowser1.Navigate("http://www.roomi.com.tw/");
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
// 使用 WebBrowser.DocumentStream 取得網頁內容
// 使用 StreamReader 讀入資料流,設定編碼為 Encoding.Default
System.IO.StreamReader reader = new System.IO.StreamReader(webBrowser1.DocumentStream, System.Text.Encoding.Default);
string gethtml = reader.ReadToEnd();
...
}
C# 使用webBrowser控制項 操弄裡面的表單 *0*
private void webBrowser5_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (webBrowser5.ReadyState < WebBrowserReadyState.Complete) return;
HtmlElement btnSubmit = webBrowser5.Document.All["btsubmit"];
HtmlElement Date_Year = webBrowser5.Document.All["Date_Year"];
HtmlElement Date_Month = webBrowser5.Document.All["Date_Month"];
HtmlElement Date_Day = webBrowser5.Document.All["Date_Day"];
HtmlElement mycontent = webBrowser5.Document.All["mycontent"];
Date_Year.SetAttribute("value", DateTime.Now.Year.ToString());
Date_Month.SetAttribute("value", DateTime.Now.Month.ToString().PadLeft(2, '0'));
Date_Day.SetAttribute("value", DateTime.Now.Day.ToString().PadLeft(2, '0'));
mycontent.SetAttribute("value", tmp);
btnSubmit.InvokeMember("click");
}
C# WebBrowser控制項的DocumentCompleted事件
最近在寫一些使用到webBrowser控制項的小程式
結果被他表面上的注解給騙了~~以為是在頁面完整載入以後才觸發=口=
原來 隨時都有可能會觸發的阿QQ"
所以原本預計跑一次的程式 跑了五六次 甚至十次以上
相當沒效率*0*
解決的方法只要加一行程式就可以嚕~~~~
結果被他表面上的注解給騙了~~以為是在頁面完整載入以後才觸發=口=
原來 隨時都有可能會觸發的阿QQ"
所以原本預計跑一次的程式 跑了五六次 甚至十次以上
相當沒效率*0*
解決的方法只要加一行程式就可以嚕~~~~
private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
if (webBrowser1.ReadyState < WebBrowserReadyState.Complete)
{
return;
}
{
return;
}
//以下正常…………
}
2009年6月21日
C# Web Form 傳值
http://msdn.microsoft.com/zh-tw/library/6c3yckfw.aspx
網頁間的傳值*0*
原本只知道用Response.Redirect()搭配page.aspx?(一大串....)
真的是會寫死我~而且好像有大小限制!?
今天研究了一個新的方法
用Server.Transfer()的方法~
小解說
---
在a.aspx拉一個Label1
*0* 注意如果Label1是protected 那就要寫一個取值得function~ 如果是public~在b.aspx就可以直接用
*0* 聽說我寫的小解說是用public
private void btn_Click(object sender,EventArgs e)
{
Server.Transfer("b.aspx",true);
}
---
在b.aspx拉一個Label2
private void Page_Load(object sender, System.EventArgs e)
{
WebForm1 newForm = (WebForm1)Context.Handler;
Label2.Text = newForm.Label1.Text;
}
網頁間的傳值*0*
原本只知道用Response.Redirect()搭配page.aspx?(一大串....)
真的是會寫死我~而且好像有大小限制!?
今天研究了一個新的方法
用Server.Transfer()的方法~
小解說
---
在a.aspx拉一個Label1
*0* 注意如果Label1是protected 那就要寫一個取值得function~ 如果是public~在b.aspx就可以直接用
*0* 聽說我寫的小解說是用public
private void btn_Click(object sender,EventArgs e)
{
Server.Transfer("b.aspx",true);
}
---
在b.aspx拉一個Label2
private void Page_Load(object sender, System.EventArgs e)
{
WebForm1 newForm = (WebForm1)Context.Handler;
Label2.Text = newForm.Label1.Text;
}
C# Web Form 動態生成控制項~需要按兩次才有反應
最近接了一個CASE~遇到一個小問題~
在按動態生成的button的時候
通常第一次都沒反應,按第二次才會執行想要的動作(例如刪除~新增~brabrabra)
整個頭差點爆炸..而且好熱*0*
找了好久才發現=口=
我在頁面讀取的時候~會重新render一次按鈕...
然後因為按下button的事件~會先執行Page_Load()才會執行Button_Click()
所以=口=
控制項在Page_Load的時候就被重新Render了...
所以Click的事件就失蹤了=口=
天阿...
我竟然在這個問題卡了老半天orz...
在按動態生成的button的時候
通常第一次都沒反應,按第二次才會執行想要的動作(例如刪除~新增~brabrabra)
整個頭差點爆炸..而且好熱*0*
找了好久才發現=口=
我在頁面讀取的時候~會重新render一次按鈕...
然後因為按下button的事件~會先執行Page_Load()才會執行Button_Click()
所以=口=
控制項在Page_Load的時候就被重新Render了...
所以Click的事件就失蹤了=口=
天阿...
我竟然在這個問題卡了老半天orz...
訂閱:
文章 (Atom)