C# Winforms-面板中的控件被剪裁

C# Winforms-面板中的控件被剪裁,c#,winforms,C#,Winforms,我正在向FlowLayoutpanel控件动态添加控件。我添加到flowlayoutpanel的控件是包含两个控件的面板:大小不同的标签和大小固定的组合框 问题是标签和组合框在其包含面板中水平显示(我认为是这样)。组合框被剪裁,几乎看不见。我已尝试将每个面板的Autosize属性设置为true,但这没有帮助 是否有办法在面板中从上到下布局控件(堆叠它们)?flowlayoutpanel可能是问题所在吗 谢谢你的帮助 private void PopulateQuestionFlowPa

我正在向FlowLayoutpanel控件动态添加控件。我添加到flowlayoutpanel的控件是包含两个控件的面板:大小不同的标签和大小固定的组合框

问题是标签和组合框在其包含面板中水平显示(我认为是这样)。组合框被剪裁,几乎看不见。我已尝试将每个面板的Autosize属性设置为true,但这没有帮助

是否有办法在面板中从上到下布局控件(堆叠它们)?flowlayoutpanel可能是问题所在吗

谢谢你的帮助

     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:你能分享代码吗?你是如何创建用户控件的