gpt4 book ai didi

c# - 当可见性改变时,mdi 子窗体绘制缓慢

转载 作者:行者123 更新时间:2023-11-30 15:10:49 25 4
gpt4 key购买 nike

我的应用程序具有以下 UI 配置:

主窗体是一个MDI 容器。它的子表单附加到 TabStrip

每个用户都有自己的一组子表单。根据事件用户,仅显示该用户的子表单以及选项卡。

这是通过遍历主窗体的 MdiChildren 并将它们的 Visible 属性设置为 false/true 来实现的,具体取决于事件用户。

        foreach (Form item in MdiChildren)
{
if (((OfficeFormEx)item).UserID == (int)e.NewTab.Tag)
{
item.Visible = true;
}
else
{
item.Visible = false;
}
}

这有两个不良影响。一个是每个子窗体都被连续重绘,这是丑陋和缓慢的。另一个是由于某种原因,表单从最大化变为正常,有效地将它们从主表单中移除。

有没有办法只显示一个子表单,例如用户之前查看的子表单,而让其他子表单留在后台?最大化/正常不是什么大问题,因为我可以再次手动最大化它们。

最佳答案

如果没有代码片段,您的问题不是很清楚。然而,您正在与 Windows MDI 实现作斗争。它不支持的一件事是隐藏子窗口,它最多只能最小化。 Windows 窗体通过销毁 Window 句柄来实现 Visible 属性,并在 Visible 属性再次设置为 True 时重新创建它。窗口的新实例不会被最大化。

也不支持在当前窗口最大化时将焦点切换到子窗口。 WF 的解决方法是强制事件子窗口返回正常状态。

MDI模型根本就不太适合在最大化状态下显示子窗口。要获得选项卡式界面,请使用 TabControl 并在其选项卡页上显示 UserControls。

关于c# - 当可见性改变时,mdi 子窗体绘制缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2943476/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com