【问题标题】:Move contents of Form when a Control is re-Located重新定位控件时移动表单的内容
【发布时间】: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


【解决方案1】:

FlowLayoutPanel 为您提供动态布局,您可以在其中调整任何控件的大小,并且所有下面的控件都会自动滑动。有许多策略可以使用流布局面板的组/列来实现整个表单的所需外观。一些谷歌搜索会发现其中一些。

例如,在上面的表单中,调整 button1 控件的大小只会使下面的所有控件流向表单的下方。您也可以在设计时尝试。将表单拖放到流布局面板中,将 3-4 个控件拖放到容器中并开始试验..

【讨论】:

    【解决方案2】:

    对于每个可展开的内容,使用面板。
    将您的面板一个接一个地停靠在另一个下(使用panel1.Dock = DockStyle.Top。对于最底部的面板,使用panel1.Dock = DockStyle.Fill)。
    将您的子控件放置在每个可扩展面板内,并相应地设置内部控件的Anchor 属性。
    当您展开一个面板时,其余面板将自动调整。您无需为此编写代码。您只会更改您当前展开的面板的Height

    【讨论】:

      【解决方案3】:

      您需要的是某种“ExplorerBar”功能。有几个控件库提供了这种功能,我发现文章here on the CodeProject 提供了它是免费的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-08-09
        • 2011-09-05
        • 2011-01-25
        • 2021-03-07
        • 1970-01-01
        相关资源
        最近更新 更多