如何在运行时打印控件创建之间的空间



我在运行时在循环中创建Label控件,但它们之间没有空间。

我该如何在两者之间留出一些空间?我的代码是:

  for (int m = 0; m < dtGroupedByDate.Rows.Count; m++)
  {
      Label Date = new Label();
      Date.Text = dtGroupedByDate.Rows[m][0].ToString();
      this.Controls.Add(Date);
      Label PowerSum = new Label();
      PowerSum.Text = dtGroupedByDate.Rows[m][1].ToString();
      this.Controls.Add(PowerSum);                       
  }

希望你的回复!

this.Controls.Add(new LiteralControl("&nbsp;"));

这一行位于这两行之间,添加

使用定位

for (int m = 0; m < dtGroupedByDate.Rows.Count; m++)
{
   Label Date = new Label();
   Date.Text = dtGroupedByDate.Rows[m][0].ToString();
   Date.Style["margin-left"] = (m > 0) ? "20px" : "0px";
   this.Controls.Add(Date);
   Label PowerSum = new Label();
   PowerSum.Text = dtGroupedByDate.Rows[m][1].ToString();
   PowerSum.Style["margin-left"] = "20px";
   this.Controls.Add(PowerSum);
}

这回答了你的问题。然而,为了更好地格式化,如果您不想在一行中显示所有ur标签,请使用style["margin-top"]。最终结果取决于你使用的定位(即"绝对"、"相对"…(。所以我建议你多读一点关于定位的内容。

我会使用CSS来完成这项工作。

我不知道文档的格式,但ASP.NET中的Label控件呈现为span,或者如果设置了AssociatedControlID,则呈现为label。因此,在基本层面上,类似于:

span, label { margin-right: 10px; }

这将更改所有跨度和标签,因此如果可能,您应该通过在选择器中指定容器来约束它。

 Dim fnt As New Font("Verdana", 8, FontStyle.Bold, GraphicsUnit.Point)
        Dim i, x, y As Integer
        x = 30
        y = 25
        i = 0
        For i = 0 To dt1.Rows.Count - 1
            Dim chk As New CheckBox()
            chk.Text = dt1.Rows(i)(0)
            chk.Location = New Point(x, y)
            chk.Font = fnt
            chk.Width = 450
            chk.ForeColor = Color.White
            Me.Panel1.Controls.Add(chk)

希望您将其转换为c#:(我最近使用过这个代码

最新更新