winform打开新窗口同时关闭原窗口
方法一: Thread th = new Thread(delegate () { new Form1().ShowDialog(); });
th.SetApartmentState(ApartmentState.STA);//单线程,防止子窗口出现跨线程问题 th.Start(); this.Close();
Thread app = new Thread(new ParameterizedThreadStart(ShowWindow));
app.ApartmentState = ApartmentState.STA;
//也可以
Thread newThread = new Thread(new ThreadStart(ThreadMethod));
newThread.SetApartmentState(ApartmentState.MTA);
方法二: Form1 form1 = new Form1(); this.Hide(); form1.ShowDialog(); this.Dispose();
方法三:
this.Hide();
Form1 form1 = new Form1();
form1.ShowDialog();
this.Close();//form1关闭后,this这个窗口的关闭事件才会执行
Winform中的Form,在显示窗口时,可以使用(非模态窗口)Show()和(模态窗口)ShowDialog()两种方式
Show()方法启动的窗口是非模态窗口,可以跟其他界面自由切换,
其后面的代码也会立刻执行,如:
Form1 form1 = new Form1();
form1.Show();
MessageBos.Show("这里会马上显示");
ShowDialog()打开的窗口为模态窗口
此类窗口不能和别的窗口自由切换,而且其后面的代码必须等关闭该窗口才会执行(就像被阻塞在那里了)
Form1 form1 = new Form1();
form1.ShowDialog();
MessageBos.Show("必须关闭了form1, 这里才会显示");
ComboBox数据绑定Lsit
this.comboBox1.DataSource = list; comboBox1.DisplayMember = "Name";//显示的文本 comboBox1.ValueMember = "ID";//选择获取的值
datatable
//创建DataTable DataTable dataTable = new DataTable(); dataTable.Columns.Add("ID"); dataTable.Columns.Add("Name"); DataRow dataRow = dataTable.NewRow(); dataRow["ID"] = "1"; dataRow["Name"] = "test1"; dataTable.Rows.Add(dataRow); DataRow dataRow1 = dataTable.NewRow(); dataRow1["ID"] = "2"; dataRow1["Name"] = "test2"; dataTable.Rows.Add(dataRow1); DataRow dataRow2 = dataTable.NewRow(); dataRow2["ID"] = "3"; dataRow2["Name"] = "test3"; dataTable.Rows.Add(dataRow2); // ComboBox数据绑定 this.comboBox1.DataSource = dataTable; comboBox1.DisplayMember = "Name"; comboBox1.ValueMember = "ID";