【发布时间】:2014-12-31 07:19:10
【问题描述】:
我目前正在使用布局并制作了一个测试项目,在该项目中我构建了一个显示面板的表单,该面板包含一个三行的 TableLayoutPanel:
- 一个文本框
- 一个按钮
- 一个占位符标签,应该占据剩余的垂直空间。
这个测试可以正常工作,但是如果我将文本框的最小大小设置为例如(400, 200),我看不到按钮了。表格布局 AutoSize 中的第一行不应该为其内容吗?注意
将 RowStyles 显式设置为 SizeType.AutoSize 不会改变任何内容。
没有设置最小尺寸:
最小尺寸集:
using System;
using System.Drawing;
using System.Windows.Forms;
namespace LayoutTest
{
static class Program
{
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
var sampleForm = new Form();
var samplePanel = new Panel() { Dock = DockStyle.Fill };
var sampleTextBox = new TextBox() { Dock = DockStyle.Fill };
// This line breaks the layout
//sampleTextBox.MinimumSize = new Size(400, 200);
var sampleButton = new Button() { Dock = DockStyle.Fill };
var panelLayout = new TableLayoutPanel() { Dock = DockStyle.Fill };
panelLayout.Controls.Add(sampleTextBox, 0, 0);
panelLayout.Controls.Add(sampleButton, 0, 1);
// Add a placeholder label to take up the remaining space
panelLayout.Controls.Add(new Label() { Text = String.Empty, Dock = DockStyle.Fill });
samplePanel.Controls.Add(panelLayout);
sampleForm.Controls.Add(samplePanel);
Application.Run(sampleForm);
}
}
}
【问题讨论】:
-
您期望 TableLayoutPanel 完成它的工作,在表格排列中布局控件,而不告诉它 如何 完成它的工作。添加行。由于 TextBox.GetPreferredSize() 返回值,这会出错。使用设计器。