读书人

Winform子窗口最大化后和主窗口重叠有

发布时间: 2013-04-26 16:27:53 作者: rapoo

Winform子窗口最大化后和主窗口重叠问题
MDI子窗口最大化后,再点击MDI父窗口的还原,两者的标题栏就合在一起了,然后子窗口就没办法还原了,怎么办?
关键是出现这种情况后,会导致我某些DGV单元格无法编辑。上图:
初始界面:
Winform子窗口最大化后和主窗口重叠有关问题
子窗口最大化后的界面:
Winform子窗口最大化后和主窗口重叠有关问题
父窗口还原后的最终界面:
Winform子窗口最大化后和主窗口重叠有关问题

打开子窗口的代码:

private void buttonItem11_Click(object sender, EventArgs e)
{
foreach (Form f in this.MdiChildren)
{
if (f is WL_SaleCost.SC_SalesQuotation)
{
f.Activate();
SetParent((int)f.Handle, (int)this.Handle);
return;
}
}
WL.WL_SaleCost.SC_SalesQuotation WF = new WL_SaleCost.SC_SalesQuotation();
//权限
if (PropertyClass.IsAdmin != 1)
{
string qx = cUse.UserAssignRight(WF);
if (qx == "没有权限")
{
MessageBoxEx.Show("没有权限,请联系系统管理员!", "软件提示");
return;
}
}
//open form
WF.MdiParent = this;
WF.Show();
SetParent((int)WF.Handle, (int)this.Handle);

[解决办法]
设置MdiParent属性了,还要设置SetParent干嘛?去掉SetParent((int)WF.Handle,(int)this.Handle);这行试试
[解决办法]
MaximumSize?
[解决办法]
如果你不想子窗口覆盖到父窗口,就把子窗口的MaximumSize设成父窗口的Height*N%不就可以了吗?

在属性里设~
[解决办法]
你的问题不就是最大化之后会BUG嘛,不让他最大化不就完了!看你纠结的
------解决方案--------------------


你使用子窗体的时候直接将父窗口隐藏。然后要用到父窗体的时候在调用一下。
用hide()隐藏,用show()调用。
反正你要操作子窗体的时候不需要操作主窗体不是吗
[解决办法]
那你为什么不隐藏子窗体的标题呢,不让其在父窗体中显示
[解决办法]
父窗体最大化后,在父窗体还原之前先对子窗体还原,等父窗体还原之后再对子窗体最大化
[解决办法]

引用:
引用:设置MdiParent属性了,还要设置SetParent干嘛?去掉SetParent((int)WF.Handle,(int)this.Handle);这行试试

我MDI主窗口上放了很多控件,如果不加这句的话,打开的子窗口就被这些控件挡住了


主窗体上还是只放工具栏啊。菜单栏啊什么的好。其他控件都放在子窗体上。

读书人网 >C#

热点推荐