(1)立刻關閉整個應用程式,不會等待當前進程結束,相當於工作管理員裡直接關閉進程
System.Environment.Exit(0);
(2)WPF開啟瀏覽器並跳轉要固定URL
Process proc = new System.Diagnostics.Process(); proc.StartInfo.FileName = "http://www.baidu.com"; proc.Start();
(3)winform Session 保持網站登入狀態
// JObject javascript = null; //username=test&password=fantao string postData = "username=" +DataUserInfo.name + "&password=" + DataUserInfo.password;//POST參數和值寫入POSTDATE裡 byte[] byteArray = Encoding.Default.GetBytes(postData); string url = "http://baidut.com/getservers?"; //POST到網站 HttpWebRequest webRequest = (HttpWebRequest)WebRequest.Create(new Uri(url)); webRequest.Method = "POST"; webRequest.ContentType = "application/x-www-form-urlencoded"; webRequest.ContentLength = byteArray.Length; webRequest.CookieContainer = DataUserInfo.myCookie; // CookieContainer cookie = webRequest.CookieContainer;//如果用不到Cookie,刪去即可 Stream newStream = webRequest.GetRequestStream(); newStream.Write(byteArray, 0, byteArray.Length); newStream.Close(); //接收返回資訊: HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse(); // WebHeaderCollection myWebHeaderCollection =response.Headers;//擷取session StreamReader php = new StreamReader(response.GetResponseStream(), Encoding.Default); // string sl = response.Headers.Get("Set-Cookie"); string Message = php.ReadToEnd(); // javascript = (JObject)JsonConvert.DeserializeObject(Message); // if (javascript["status"].ToString() == "n") // { // string s = javascript["info"].ToString();//反回錯誤資訊 // }
4.HashTable的取值和鍵的方法
foreach (DictionaryEntry de in HtServerVSName)//HtServerVSName是HashTable { string sed = de.Key.ToString(); string seds = de.Value.ToString(); }
5.操作DataSet中的DataTable
DataTable dt = new DataTable("MyDt"); DataSet ds = new DataSet("MyDs"); ds.Tables.Add(dt);//把表添加到庫裡,怎麼樣,簡單吧,呵呵 //ds.Tables["MyDt"].Rows[2]["name"] = "語文";//給table中的某個欄位的某個記錄賦值 //ds.Tables["MyDt"]就找到表了if (ds.Tables.Contains("MyDt")){ foreach (DataRow tempRow in ds.Tables["MyDt"].Rows) { if ("ip" == tempRow["Server"].ToString()) { //遍曆取資料 } }}
6.用記憶體共用 進行處理序間通訊,方便快捷。
可實現單 一程式啟動,並且開啟已啟動的程式和托盤操作
7. wpf帶選擇按鈕的messagebox
ButtonBase button = this.Template.FindName("PART_CloseButton", this) as ButtonBase; if (button != null) { button.Click += delegate//匿名委託 { MessageBoxResult dr = MessageBox.Show("您正在刪除該伺服器條目。\n\n確定要刪除該伺服器條目嗎。", "提示", MessageBoxButton.OKCancel); if (dr == MessageBoxResult.OK) { // get the parent tabcontrol TabControl tc = Helper.FindParentControl<TabControl>(this); if (tc == null) return; // remove this tabitem from the parent tabcontrol tc.RemoveTabItem(this); } }; }
8.事務委託
WPF 應用程式啟動時具有兩個線程:一個用於處理呈現,另一個用於管理 UI。 呈現線程實際上隱藏在後台運行,而 UI 線程則接收輸入、處理事件、繪製螢幕以及運行應用程式代碼。UI 線程在一個名為Dispatcher 的對象中將工作項目進行排隊。Dispatcher 根據優先順序選擇工作項目,並運行每一個工作項目直到完成。Dispatcher 類提供兩種註冊工作項目的方法:Invoke 和 BeginInvoke。 這兩個方法都會安排執行一個委託。Invoke 是同步調用,即它直到 UI 線程實際執行完該委託時才返回。BeginInvoke 是非同步呼叫,因而將立即返回。
Thread thread = new Thread(new ThreadStart(() => { // Thread.Sleep(5000); Dispatcher.Invoke(new Action(() => { //方法體fun(); }), null); }));thread.start(); Thread t = new Thread(new ThreadStart( delegate { tb_test.Dispatcher.BeginInvoke(new Action(delegate { tb_test.Text = "123"; }), null); })); t.Start();
9.wpf後台改變textbox或label或textblock的字型顏色
textbox.Foreground = new SolidColorBrush(Colors.AliceBlue); //用固態畫刷填充前景色彩
10.Listview清空問題。
如果ListView資料來源來自:listview.ItemsSource=list;
只要清空List,就能清空listview;
如果用listview.clear();那麼多次點擊清空按鈕就會出現:當 ItemsSource 正在使用時操作無效。改用 ItemsControl.ItemsSource 訪問和修改元素。這個異常。
11.wpf動畫完成後勢行某一事件的,Lamda表達示;
Storyboard sb = this.Resources["storyboard"] as Storyboard; sb.Completed += (s, a) => { //要做的工作 }; sb.Begin();
12.wpf嵌入Winform控制項
xmlns:wfi ="clr-namespace:System.Windows.Forms.Integration;assembly=WindowsFormsIntegration" xmlns:wf ="clr-namespace:System.Windows.Forms;assembly=System.Windows.Forms"
13.WPF中其它自訂類中訪問主視窗中的控制項解決辦法
比如,在類中要尋找一個StackPanel,用如下方法。
StackPanel spi = Application.Current.MainWindow.FindName("ItemStak") as StackPanel;
14. (Dictionary.Add(key,"123") 和 Dictionary[key]="123")
如果Dictionary中已經有了key, 則再Add會報錯: Dictionary 中已存在具有相同鍵的元素。
而 Dictionary[key]則不會報錯,沒有時添加,有時則修改替換,因此,更加推薦使用這個方法,更安全,不必寫個if判斷。