我有一个带有一些文本框和按钮的简单网页。当我单击其中一个按钮时,我想在下面显示一些标签并显示一些信息。
只要我拥有_Default类中的所有方法,这就完美无缺。但是,我真正需要的是所有这些东西都在一个包装类中。我已经用我正在做的所有其他方法创建了包装类,除了标签之外,一切都很好。他们没有表现出来。这不是代码本身的问题,因为相同的代码在_Default类中起作用。它不是类本身,因为该类中的其他方法在_Default类中工作正常。所以它似乎是关于其他类中的标签的特定内容,我无法弄清楚。跨类控件是否存在一些继承问题?
我在包装器类中只有一个创建标签的简单方法:
public void createLabels(string labelName)
{
Label label_Name = new Label();
label_Name.ID = "label_Name";
label_Name.Text = labelName;
Controls.Add(label_Name);
Label get_Name = new Label();
get_Name.ID = "get_Name";
get_Name.Text = "Not found";
Controls.Add(get_Name);
}
然后在_Default类中,我将此方法称为
MyWrapperClass abc = new MyWrapperClass();
abc.createLabels("asdf");
我猜测问题出在" Controls.Add"但我找不到正确的方法。
答案 0 :(得分:1)
您正在尝试添加到包装器类中的控件。但是您的包装类中没有Page对象。
您可以从包装类中返回一个Label,并将其添加到主类中的控件。
public Label createLabels(string labelName)
{
Label label_Name = new Label();
label_Name.ID = "label_Name";
label_Name.Text = labelName;
return label_Name;
}
然后在_Default类中,调用此方法,如
MyWrapperClass abc = new MyWrapperClass();
Page.Controls.Add(abc.createLabels("asdf"));
答案 1 :(得分:1)
将父控件作为参数传递给createLabels
:
public class MyWrapperClass
{
...
public void createLabels(Control parent, string labelName)
{
Label label_Name = new Label();
label_Name.ID = "label_Name";
label_Name.Text = labelName;
parent.Controls.Add(label_Name);
Label get_Name = new Label();
get_Name.ID = "get_Name";
get_Name.Text = "Not found";
parent.Controls.Add(get_Name);
}
}
MyWrapperClass abc = new MyWrapperClass();
abc.createLabels(this, "asdf");