【问题标题】:Implement a "click-here-to-expand" container实现“点击此处展开”容器
【发布时间】:2013-02-13 14:52:40
【问题描述】:

我没有更好的方法来解释它,但我想实现一个仅在用户单击“高级”或对话框中某处的加号后显示的容器。我有一个登录表单,想添加一些“高级”设置。但它们通常应该不在视线范围内。

当然,对话框必须很好地调整大小以容纳扩展内容。

我应该如何去实现这样的事情。我尝试了一些谷歌搜索,但找不到正确的搜索词。 Windows 似乎默认没有它。

【问题讨论】:

  • 它被称为扩展器。您使用的是 WPF、Winforms 还是 ASP.NET?
  • 我不明白为什么这会导致投票和投票结束。这是一个真正的问题,假设他不熟悉 WinForms,这是一个完全合理的问题。仅仅因为它对我们中的一些人来说似乎微不足道并不意味着这是一个糟糕的问题。
  • 虽然这是重复的(如果这是用于 WinForms 的话)。您可以在这里找到您的问题的几个答案:stackoverflow.com/questions/3795005/…
  • 您可以动态调整表单本身的大小。使用控件等设计处于展开状态的表单,并根据需要更改高度,显示或隐藏(以及启用/禁用以防止不必要的焦点)控件。

标签: c# .net dialog containers


【解决方案1】:

正如 John Willemse 所建议的,我最终自己创建了该功能。我在刚刚设置为可见或不可见的表单中添加了Panel

在表单的构造函数中(在第一个视图中隐藏它):

    public FrmLogin() {
        InitializeComponent();

        pnlAdvanced.Visible = false;
        Height -= pnlAdvanced.Height;
    }

然后,我用这个Clicked 处理程序添加了一个LinkLabel

   private void linkLabel1_LinkClicked(object sender, 
                            LinkLabelLinkClickedEventArgs e) {
        if (pnlAdvanced.Visible == false) {
            Height += pnlAdvanced.Height;
            pnlAdvanced.Visible = true;
        } else {
            Height -= pnlAdvanced.Height;
            pnlAdvanced.Visible = false;
        }
    }

完美运行,无需额外代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-06-05
    • 2017-11-06
    • 1970-01-01
    • 2020-09-20
    • 2017-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多