FlowLayoutPanel中的新行

时间:2017-06-19 18:01:37

标签: c# winforms flowlayoutpanel

我正在使用以下代码在FlowLayoutPanel内动态生成控件(win forms - c#)。我希望在内部foreach完成后添加换行符。 var fullText = textBox1.Text;

        List<string> listPoints = fullText.Split('#').ToList();

        foreach (var listPoint in listPoints)
        {
            if (listPoint.Contains('^'))
            {
                var listTextboxes = listPoint.Split('^');
                int textBoxCount = listTextboxes.Count();
                int index = 1;
                foreach (var listTextbox in listTextboxes)
                {
                    CheckBox ck = new CheckBox();
                    ck.Text = listTextbox;
                    ck.AutoSize = true;
                    ck.CheckStateChanged += new EventHandler(this.CheckBox_CheckedChanged);
                    flowLayoutPanel1.Controls.Add(ck);

                    if (index < textBoxCount)
                    {
                        TextBox tb = new TextBox();
                        tb.AutoSize = true;
                        tb.TextChanged += new EventHandler(this.TextBox_TextChanged);
                        flowLayoutPanel1.Controls.Add(tb);
                    }
                    index++;
                }

                // code for New line break
            }
            else
            {
                CheckBox ck = new CheckBox();
                ck.Text = listPoint;
                ck.AutoSize = true;
                ck.CheckStateChanged += new EventHandler(this.CheckBox_CheckedChanged);
                flowLayoutPanel1.Controls.Add(ck);

                flowLayoutPanel1.
            }

1 个答案:

答案 0 :(得分:3)

使用SetFlowBreak方法:

Control lastControl = null;
if (listPoint.Contains('^')) {
  var listTextboxes = listPoint.Split('^');
  int textBoxCount = listTextboxes.Count();
  int index = 1;
  foreach (var listTextbox in listTextboxes) {
    CheckBox ck = new CheckBox();
    ck.Text = listTextbox;
    ck.AutoSize = true;
    ck.CheckStateChanged += new EventHandler(this.CheckBox_CheckedChanged);
    flowLayoutPanel1.Controls.Add(ck);

    if (index < textBoxCount) {
      TextBox tb = new TextBox();
      tb.AutoSize = true;
      tb.TextChanged += new EventHandler(this.TextBox_TextChanged);
      flowLayoutPanel1.Controls.Add(tb);
      lastControl = tb;
    } else {
      lastControl = ck;
    }
    index++;
  }
  if (lastControl != null) {
    flowLayoutPanel1.SetFlowBreak(lastControl, true);
  }