【发布时间】:2011-07-01 17:57:07
【问题描述】:
我有一个关于表单和控件的问题。我想添加使表单的一部分仅在单击某些内容时显示的功能。例如,我有 form1,在表单上我有一个按钮,当单击该按钮时,表单会增长或扩展(滑出?)以显示在单击按钮之前不存在的其他控件。我不知道这叫什么,所以我不知道要寻找什么,但我已经看到它在许多其他应用程序中使用。任何有关这方面的信息将不胜感激。
【问题讨论】:
标签: c# .net winforms controls extend
我有一个关于表单和控件的问题。我想添加使表单的一部分仅在单击某些内容时显示的功能。例如,我有 form1,在表单上我有一个按钮,当单击该按钮时,表单会增长或扩展(滑出?)以显示在单击按钮之前不存在的其他控件。我不知道这叫什么,所以我不知道要寻找什么,但我已经看到它在许多其他应用程序中使用。任何有关这方面的信息将不胜感激。
【问题讨论】:
标签: c# .net winforms controls extend
我以前做过。首先将表单组织成逻辑部分。不要将所有控件留在表单上,将它们放在面板内。在设计时,您需要让面板“完全展开”,但在运行时,您可以通过代码操作面板的左、上、宽、高,甚至可能是对齐和锚点属性。您可以按照@Adam Rackis 的建议使用计时器。或者您可以更改增量值以改变动画的速度。动画本身只是一个以 x = x1 开始并以 x = x2 结束的循环,其中 x = x + increment_value 在循环内。随着“x”值的变化,组件将自动重绘。为了获得更平滑的效果,您可能需要在每次迭代时重新绘制控件(或整个面板)。如果它运行得太快,您可以插入延迟或尝试使循环依赖于计时器。我在这类东西的计时器方面遇到了问题,但不可否认,我当时没有使用 C#.NET(我在 Delphi 中做过)。需要对细节进行大量摆弄才能使其正常工作,所以请耐心等待,这不是 Flash!祝你好运。
【讨论】:
您可能必须滚动自己的动画,在计时器上增加表单(或面板或其他)的尺寸,从而暴露之前隐藏的控件。
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 来说非常容易。如果不是,那么这样的事情应该可以帮助您入门。
【讨论】: