C# Winforms-面板中的控件被剪裁
我正在向FlowLayoutpanel控件动态添加控件。我添加到flowlayoutpanel的控件是包含两个控件的面板:大小不同的标签和大小固定的组合框 问题是标签和组合框在其包含面板中水平显示(我认为是这样)。组合框被剪裁,几乎看不见。我已尝试将每个面板的Autosize属性设置为true,但这没有帮助 是否有办法在面板中从上到下布局控件(堆叠它们)?flowlayoutpanel可能是问题所在吗 谢谢你的帮助C# Winforms-面板中的控件被剪裁,c#,winforms,C#,Winforms,我正在向FlowLayoutpanel控件动态添加控件。我添加到flowlayoutpanel的控件是包含两个控件的面板:大小不同的标签和大小固定的组合框 问题是标签和组合框在其包含面板中水平显示(我认为是这样)。组合框被剪裁,几乎看不见。我已尝试将每个面板的Autosize属性设置为true,但这没有帮助 是否有办法在面板中从上到下布局控件(堆叠它们)?flowlayoutpanel可能是问题所在吗 谢谢你的帮助 private void PopulateQuestionFlowPa
private void PopulateQuestionFlowPanel()
{
foreach (var question in _viewModel.Questions)
{
//build question label
var questionLabel = new Label();
questionLabel.Text = question.Text;
questionLabel.Tag = question.Id;
//build answer combobox
var answerCombo = CreateQuestionComboBox(question);
//put question and answer into panel
var controlPanel = new Panel();
controlPanel.Tag = question.Id;
controlPanel.AutoSize = true;
controlPanel.Controls.Add(questionLabel);
controlPanel.Controls.Add(answerCombo);
//add panels to flowpanel
questionPanel.Controls.Add(controlPanel);
}
}
也许使用TableLayoutPanel并删除所有列比您可以这样做更好:
int i = 0;
foreach (var question in _viewModel.Questions)
{
//build question label
var questionLabel = new Label();
questionLabel.Text = question.Text;
questionLabel.Tag = question.Id;
//build answer combobox
var answerCombo = CreateQuestionComboBox(question);
//put question and answer into panel
var controlPanel = new Panel();
controlPanel.Tag = question.Id;
controlPanel.AutoSize = true;
controlPanel.Controls.Add(questionLabel);
controlPanel.Controls.Add(answerCombo);
//add panels to flowpanel
tableLayoutPanel1.SetRow(controlPanel, i);
tableLayoutPanel1.RowCount = i++;
}
面板控件不提供自动布局。设置标签和组合的位置和大小属性。或者使用用户控件。或者先在designer中完成这项工作,然后查看designer生成的代码以获得正确的结果。谢谢。。我认为usercontrol是一个好方法idea@HansPassant用户控制解决方案运行良好。如果你添加一个答案,我会选择它。@Nick:你能分享代码吗?你是如何创建用户控件的