2009年9月12日

C# JS的Escape和UnEscape *0*

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月6日

C# 預設輸入法~~

InputLanguageCollection ilc = InputLanguage.InstalledInputLanguages;

foreach (InputLanguage il in ilc)
{
//中文 (繁體) - 美式鍵盤

//中文 (繁體) - 注音

//中文 (繁體) - 新注音

if (il.LayoutName == "中文 (繁體) - 新注音")
{
InputLanguage.CurrentInputLanguage = il;
}
}

C# 用WMI控制開機重啟

ref system.management

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

    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日

    C# ACCESS設密碼~就一直GY出錯

    我用.NET 2005 要連ACCESS資料庫~~~如果沒設密碼 都很OK~~



    可是一旦設了密碼...= =+



    夭壽~~



    一直出現錯誤











    找了好久~~才找到一個莫名其妙的解決方法...


























    這邊一定要把密碼填上(其他地方填的都沒用)...就會莫名其妙可以了~~以上...

    *0*

    2009年8月11日

    C# 解決不能加入Shockwave Flash Object的問題

    原本想要在winform裡面加一個Flash的控制項來玩玩~



    結果沒想到一直出問題



    會跑出啥未註冊的錯誤...



    後來在網路上找了好久 看了好多討論



    最後終於得到了一個偏方= =



    專案→屬性→建置→平台目標  改成 x86



    然後在 建置 裡面 不停的清除 + 重建 + 清除 + 重建 ............. 弄到 AxShockwaveFlashObject 的黃色驚嘆號不見為止= ="

    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*

    解決的方法只要加一行程式就可以嚕~~~~


    private void webBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)

    {

        if (webBrowser1.ReadyState < WebBrowserReadyState.Complete)
        {
        return;
        }

        //以下正常…………

    }

    2009年6月21日

    C# 無法啟用條件約束 一或多個資料列的值違反非 Null 唯一或外部索引鍵條件約束

    結論是 xsd 出問題了..

    檢查一下吧 囧

    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;

    }

    C# Web Form 動態生成控制項~需要按兩次才有反應

    最近接了一個CASE~遇到一個小問題~

    在按動態生成的button的時候

    通常第一次都沒反應,按第二次才會執行想要的動作(例如刪除~新增~brabrabra)



    整個頭差點爆炸..而且好熱*0*



    找了好久才發現=口=

    我在頁面讀取的時候~會重新render一次按鈕...

    然後因為按下button的事件~會先執行Page_Load()才會執行Button_Click()

    所以=口=

    控制項在Page_Load的時候就被重新Render了...

    所以Click的事件就失蹤了=口=



    天阿...



    我竟然在這個問題卡了老半天orz...