我想做的是展开和折叠我的 winform 的中间部分。我知道这里有类似的问题,但没有一个能真正满足我的需要。我读过有关使用 FlowLayoutPanel
的信息,但我无法让它工作。
我想要实现的一个例子是:
我有我的 winform(例子)
当我单击 button1
时,它应该隐藏中间的文本框并缩小表单以隐藏空间,当我单击 button2
时反之亦然。无论哪种方式,button3
都应保持在显示或未显示文本框的位置下方。
到目前为止,我的尝试要么只是隐藏文本框而不对表单进行任何操作,要么缩小的幅度超出了应有的范围。我目前一直在将 AutoSize
设置为 true
并将 AutoSizeMode
设置为 GrowAndShrink
。
我见过可以执行此操作或类似操作的控件,但它们有箭头或小按钮来展开表单,我只需要按钮即可执行此操作。
有没有简单的方法来做到这一点?
感谢任何帮助。
更新
我已经尝试将高度设置为 0 并按照建议隐藏文本框,但它只是折叠了表单的右侧而不是中间。
最佳答案
您需要将表格的原始高度存储在一个变量中,以便稍后再次展开时可以恢复它。此外,如果将 Button3 锚定到底部,则在调整大小时不必处理它:
public partial class Form1 : Form {
private int originalHeight;
public Form1() {
InitializeComponent();
button3.Anchor = AnchorStyles.Left | AnchorStyles.Bottom;
}
protected override void OnLoad(EventArgs e) {
originalHeight = this.Height;
base.OnLoad(e);
}
private void button1_Click(object sender, EventArgs e) {
textBox1.Visible = false;
this.Height = originalHeight - textBox1.Height;
}
private void button2_Click(object sender, EventArgs e) {
this.Height = originalHeight;
textBox1.Visible = true;
}
}
在表单上保留 AutoSize=false;
,因为您要自己处理调整大小。
我会考虑使用一个按钮来处理表单的切换,因为当表单展开时 Button2 毫无用处,反之亦然,如果表单折叠则 Button1 毫无用处。
关于c# - 展开和折叠 winform,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10532114/