显示和隐藏winforms的部分(扩展?)C#.NET

时间:2011-02-22 05:06:30

标签: c# .net winforms controls extend

我对表单和控件有疑问。我想添加一种能够使我的表单的一部分仅在点击某些内容时显示的能力。例如,我有form1,在表单上我有一个按钮,当单击该按钮时,表单会增长或扩展(滑出?)以显示在单击按钮之前不存在的其他控件。我不知道这叫什么,所以我不知道该寻找什么,但我已经看到它用于许多其他应用程序。任何有关这方面的信息将不胜感激。

2 个答案:

答案 0 :(得分:2)

您可能需要滚动自己的动画,增加计时器上的表单(或面板或其他)的大小尺寸,从而暴露以前隐藏的控件。

        Timer T = new Timer();
        T.Interval = 10;
        T.Tick += (s, e) =>
        {
            myForm.Size = new System.Drawing.Size(myForm.Width + 10, myForm.Height);
            if (myForm.Size.Width >= FormWidthThreashold)
                T.Stop();
        };
        T.Start();

冒着明显的风险,我不认为有什么方法可以切换WPF吗?这个东西是内置的,对于WPF来说非常容易。如果没有,这样的事情应该让你开始。

答案 1 :(得分:2)

我以前做过这个。首先将表单组织成逻辑部分。不要将所有控件留在表格上,将它们放在面板内。在设计时你需要让面板“完全展开”,但是在运行时你可以通过代码操纵面板的左,顶部,宽度,高度,甚至是对齐和锚点属性。您可以使用@Adam Rackis建议的计时器..或者您可以更改增量值以更改动画的速度。动画本身只是一个以x = x1开头并以x = x2结尾的循环,其中x = x + increment_value在循环内。随着“x”的值发生变化,组件将自动重绘。为了获得更平滑的效果,您可能需要在每次迭代时重新绘制控件(或整个面板)。如果它运行得太快,您可以插入延迟或尝试使循环依赖于计时器。我对这种东西的计时器有问题,但当然我当时没有使用C#.NET(我在Delphi中做过)。为了让这个工作得很好,需要花费很多精力细节,所以请耐心等待,这不是Flash!祝你好运。