C# - 如何将动态创建的标签和文本框彼此对齐

时间:2017-06-02 16:25:53

标签: c# asp.net webforms

到目前为止,我已经动态创建了在C#

中使用此函数创建的标签和文本框
private void AddControls(int controlNumber, string label)
{
    var newLabel = new Label() 
    {
        Text = "(" + label + ")"
    };
    var title = new Label()
    {
        Text = "External Name",
    };
    var newTextbox = new TextBox()
    {
        Width = 306,
        MaxLength = 10
    };

    // textbox needs a unique id to maintain state information
    newTextbox.ID = "TextBox_" + controlNumber;

    // add the labels and textbox to form
    Name.Controls.Add(title);
    Name.Controls.Add(newTextbox);
    Name.Controls.Add(newLabel);
    Name.Controls.Add(new LiteralControl("<br/>"));
}

动态部分工作正常,但我希望标题和newTextBox与下面的newLabel并排。此外,Name是唯一可以添加标签和文本框的ID。似乎无法弄清楚如何在C#和非HTML中做到这一点。非常感谢任何帮助!

2 个答案:

答案 0 :(得分:0)

您可以使用控件上的Location属性在表单上设置位置。这需要Point作为其值

newLabel.Location = new Point(10, 50);
newTextbox.Location = new Point(80, 50);

这将在表格上设置他们的坐标。您需要检查控件的大小以使它们垂直对齐,但上面的内容会将它们放在同一水平线上。

我想Name是这个函数所在的表单的名称?如果您希望控件显示在另一个表单上,您很可能需要传递您希望控件显示的Form实例的引用。

答案 1 :(得分:-1)

对于任何有同样问题的人我都明白了。我将其添加到最后,以便标题和文本框与

下面的标签保持在同一行
        df_External_Name.Controls.Add(new LiteralControl("<tr>"));
        df_External_Name.Controls.Add(new LiteralControl("<td>"));
        df_External_Name.Controls.Add(title);
        df_External_Name.Controls.Add(new LiteralControl("</td>"));
        df_External_Name.Controls.Add(new LiteralControl("<td>"));
        df_External_Name.Controls.Add(newTextbox);
        df_External_Name.Controls.Add(new LiteralControl("</td>"));
        df_External_Name.Controls.Add(new LiteralControl("</tr>"));
        df_External_Name.Controls.Add(new LiteralControl("<tr>"));
        df_External_Name.Controls.Add(new LiteralControl("<td>"));
        df_External_Name.Controls.Add(newLabel);
        df_External_Name.Controls.Add(new LiteralControl("</td>"));
        df_External_Name.Controls.Add(new LiteralControl("</tr>"));
相关问题