第一次发帖各位多照顾!frmmain窗体上有treeview,用treeview打开新窗体form时焦点不会在新窗体form上,而是在frmmain上。
.focus/.Activate 无效!
不想用form.ShowDialog和form.TopMost否则就不能切换了!
看了一些帖子有用timer或异步处理的!觉得不是很理想!期待高手解决这个问题!万分感谢!
.focus/.Activate 无效!
不想用form.ShowDialog和form.TopMost否则就不能切换了!
看了一些帖子有用timer或异步处理的!觉得不是很理想!期待高手解决这个问题!万分感谢!
{
Form frm = new Form();
frm.Show();
frm.BringToFront();
}
splitcontainer
将form2的parent设为panel1
ZengHD 的 是用按钮打开,但是我想用的是treeview打开,frm.BringToFront()也没有用。
wuyq11 的是在同一个窗口中操作,我想要的效果是打开一个主窗体以外的新窗体!接着补充,从treeview中打开新窗体时新窗体只是一闪就失去焦点了!我也觉得很奇怪,焦点一直在treeview上!
private void treeView1_NodeMouseClick(object sender,TreeNodeMouseClickEventArgs e)
{
form2 f=new form2();
f.show();
}新窗体不属于主窗体!
parent.losefocus();
f.show();
#region 点击TV节点打开窗体
private delegate void dlgProc(string path);//声明了一个代理用来执行一个异步的操作. private void thProc(string path)//异步调用时执行的方法
{
dlgProc dp = new dlgProc(OpenSubForm);//声明一个代理用来执行原来线程里的方法
this.Invoke(dp, new object[] { path });//在这里再用Invoke来调用原来线程里的打开窗体的方法
} private void OpenSubForm(string path)
{
switch (path)
{
case "exit":
timer1.Stop();
this.Close();
break;
case "toubao":
if (Application.OpenForms["Toubao"] == null)
{
Toubao tb = new Toubao();
tb.Show();
}
break;
case "setting":
if (Application.OpenForms["Setting"] == null)
{
Setting set = new Setting();
set.Show();
}
break;
case "ExportData":
if (Application.OpenForms["ExportData"] == null)
{
ExportData ed = new ExportData();
ed.Show();
}
break;
case "LoadStud":
if (Application.OpenForms["LoadStud"] == null)
{
LoadStud ls = new LoadStud();
ls.Show();
}
break;
case "ClearStudInfo":
.......
break;
}
}
private void TV_NodeMouseClick(object sender, TreeNodeMouseClickEventArgs e)
{
string path=e.Node.Name;
dlgProc dp = new dlgProc(this.thProc);//声明代理实例
dp.BeginInvoke(path, null, null);//开始执行异步的操作 }
#endregion
谢谢各位的回答!
非常感谢!