【问题标题】:Problems transitioning between panels (C# WinForms)面板之间的转换问题(C# WinForms)
【发布时间】:2013-08-09 01:29:08
【问题描述】:

我正在用 C# 编写一个“多屏幕”应用程序。 “屏幕”代表程序的不同区域,即设置、受限访问、管理等。

我遇到的问题是当我在一个面板和另一个面板之间转换时。在过渡过程中,整个表格会瞬间出现故障,并且可以看到一些控件的轮廓。面板上的任何文本都显示为与另一个面板的背景一起出现的块,并且会发生其他奇怪的事情。

这是我试图解释的一些屏幕截图......

这是我要过渡到的面板应该如下所示:

以下是过渡过程中发生的情况:

我有一个用于在面板之间转换的功能。代码如下:

delegate void DtransPanel(object pan1, object pan2);
    private void transPanel(object hide, object show)
    {
        if (InvokeRequired) Invoke(new DtransPanel(transPanel), new object[] { hide, show });
        else
        {
            Panel h = (Panel)hide;
            Panel s = (Panel)show;
            h.Hide();
            Application.DoEvents();
            s.Show();
        }
    }

在图形等方面,我完全是新手。可能有比使用上面的函数更好的方法:P

如果我没有找到类似的问题(我确实搜索过)或者如果我犯了这个星球上最愚蠢的错误,我深表歉意......

【问题讨论】:

  • 我强烈推荐 WPF 而不是 winforms 几乎任何东西。由于基于 DirectX 的硬件加速,您不会遇到这些问题。顺便说一句,您可以使用WPF Bag of Tricks,其中包括TransitionPresenter,它支持数十种不同的动画过渡。 here 是这些转换的一些示例。
  • 有时我从不同的线程调用,但主要来自主应用程序线程

标签: c# winforms transition panels


【解决方案1】:

您可以尝试使用:

Panel h = (Panel)hide;
Panel s = (Panel)show;
h.Hide();
s.SuspendLayout();
s.Show();
s.ResumeLayout();

这应该意味着你不会看到

【讨论】:

    猜你喜欢
    • 2010-11-25
    • 1970-01-01
    • 2021-04-15
    • 2012-05-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-22
    • 2017-10-09
    相关资源
    最近更新 更多