Winforms布局:展开/折叠部分UI

时间:2014-10-08 08:59:14

标签: c# winforms layout

第一件事:不可能使用WPF,因为它是一个插件(用于SolidWorks),而一个用于WPF的ElementHost会导致显示错误。

我需要使ui元素相对。这意味着,如果我隐藏一些元素,我希望下面的元素缩小差距。

我尝试使用锚点和growandshrink / autosize面板 - 没有运气。

示例UI:

[Button]
[*] Checked RadioButton
       [TextField]
       [AnotherTextField]
[ ] Unchecked RadioButton
[Button]

更改选定的RadioButton后,第二个RadioButton和所有后续元素应该缩小差距,如下所示:

[Button]
[ ] Unchecked RadioButton
[*] Checked RadioButton
[Button]

2 个答案:

答案 0 :(得分:5)

这对于FlowLayoutPanel来说是微不足道的。将Flow属性设置为TopDown。添加一个RadioButton,两个TextBox和另一个RadioButton。在TextBoxes上设置Margin属性,使它们看起来缩进(例如Left = 20),它们的Visible属性为False。

然后你只需要一小段代码就可以使他们的Visible属性按照单选按钮的Checked属性:

    private void radioButton1_CheckedChanged(object sender, EventArgs e) {
        textBox1.Visible = textBox2.Visible = radioButton1.Checked;
    }

答案 1 :(得分:0)

您可以尝试放置尽可能多的面板并将Dock设置为Top值。在每个面板中进行一个控件。我尝试了简单的测试 - 点击面板制作事件 - 隐藏它。下面的所有面板都会上升