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的取值和键的方法
//HtServerVSName是HashTable
foreach (DictionaryEntry de in HtServerVSName)
{
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的字体颜色
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判断。
评论回复