【问题标题】:Showing and hiding parts of winforms (extending?) C# .NET显示和隐藏部分 winforms(扩展?) C# .NET
【发布时间】:2011-07-01 17:57:07
【问题描述】:

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

【问题讨论】:

    标签: c# .net winforms controls extend


    【解决方案1】:

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

    【讨论】:

    • 也感谢您的意见,我会研究这两种风格
    【解决方案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 来说非常容易。如果不是,那么这样的事情应该可以帮助您入门。

    【讨论】:

    • 对于新开发人员,您是否推荐 WPF 而不是 winforms?我正在尝试通过做 C# 来学习 C#,因为它比阅读书籍更有趣,尽管我确实参考了很多这样的网站。如果很多这类事情更容易,我可以切换到 WPF。我目前是初学者,所以我目前没有做任何重要的事情。会有多困难?
    • 学习 XAML 有点像学习曲线,然后开始了解 MVVM。我会说使用 WinForms 熟悉 C#,然后看看 WPF。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-10-01
    • 1970-01-01
    • 2020-03-12
    • 1970-01-01
    • 2021-03-03
    • 2011-01-11
    • 1970-01-01
    相关资源
    最近更新 更多