【发布时间】:2011-05-15 05:38:26
【问题描述】:
假设我的表单上有许多控件,当用户点击其中一个时,它的高度会扩大。这意味着,当前,当这个被点击的控件展开时,它下面的其他控件将被展开的控件覆盖。
但我想要发生的是,扩展控件下方的每个控件向下滑动,以便它们再次位于扩展控件下方。
我知道如何处理滑动,但我只是不知道如何使每个控件除了每次移动给定控件时移动一次。
非常感谢任何帮助,谢谢!
这就是我的想法:
void newOrderReceived(object sender, EventArgs e)
{
foreach(Control OrderNotificationBox in OrdersPanel.Controls)
{
if(OrderNotificationBox is NotificationBox) // Checks to see if the control is a NotificationBox
{
// Add my code to slide controls down.
}
}
}
但是...我如何知道控件是否低于扩展控件?
这是我应该如何更改扩展控件下方所有控件的位置吗?
编辑:刚刚想到,要检查 NotificationBox 是否在 Expanded NotificationBox 下方,请参阅下面的修改代码:
void newOrderReceived(object sender, EventArgs e)
{
foreach(Control OrderNotificationBox in OrdersPanel.Controls)
{
if(OrderNotificationBox is NotificationBox) // Checks to see if the control is a NotificationBox
{
if(OrderNotificationBox.Location.Y <= ExpandedNotificationBox.Location.Y + ExpandedNotificationBox.Size.Width)
{
// Add my code to slide controls down.
}
}
}
}
但是这样就足够了吗?目前,这是有效的,所以我想我只是回答了我自己的问题。但是,没有更好的方法来做到这一点吗?更优雅/更高效的方式?
以下是它的外观示例:
【问题讨论】:
-
您能否提供表单的屏幕截图和扩展控件的示例?
标签: c# .net winforms controls location