请问大家一个WinForm的问题:
主窗体Form里面,
一个按钮 new 了另一个form,
大概代码如下:
Form f = new Form()
Panel p = new Panel();
MainForm.Controls.Add(p);
f.TopLevel = false;
f.Dock = DockStyle.Fill;
f.Parent = p;
f.Show();问题:Deactivate事件不能使用了,我知道整个过程父窗体并没有失去焦点。
我想在点击其它地方(不在子窗体控件内时)触发一个事件,像Deactivate类拟的,该如何做?
主窗体Form里面,
一个按钮 new 了另一个form,
大概代码如下:
Form f = new Form()
Panel p = new Panel();
MainForm.Controls.Add(p);
f.TopLevel = false;
f.Dock = DockStyle.Fill;
f.Parent = p;
f.Show();问题:Deactivate事件不能使用了,我知道整个过程父窗体并没有失去焦点。
我想在点击其它地方(不在子窗体控件内时)触发一个事件,像Deactivate类拟的,该如何做?
好麻烦呀,我有三个这样的子窗体,MainForm每点击一次就要遍历是否点在Panel里面,再乘以3倍,这性能……
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (msg.Msg >= 513 && msg.Msg <= 515 && msg.HWnd != this.Handle)
{
MessageBox.Show("ok");
return true;
}
else
{
return base.ProcessCmdKey(ref msg, keyData);
}
}
可以获得焦点啊
业务员下面的那个窗体,是一个Form来的,我想点击界面的其它地方(包括没有控件的),有个事件通知那Form关闭或隐藏。是这个意思。
{
Panel1.Hide();
}
Deactivate事件?你show出子窗体之后要把子窗体激活啊。不然怎么会触发Deactivate
就是因为是Add进来的子窗体,Deactivate事件不会触发。
1,show的过程中异步去激活子窗体Activate。
2,show方法执行完毕之后再激活窗体Activate。
还是不会怎么去异步激活子窗体呀,
例如:
大概代码如下:
Form f = new Form()
Panel p = new Panel();
MainForm.Controls.Add(p);
f.TopLevel = false;
f.Dock = DockStyle.Fill;
f.Parent = p;
f.Show();
//////////////
f.Activate();
this.BeginInvoke(委托)
这样么?????能否给一两行简单的代码示例