【问题标题】:How to add controls to a class inheriting from Panel?如何将控件添加到从 Panel 继承的类?
【发布时间】:2011-11-18 18:38:19
【问题描述】:

我正在创建一个自定义控件,我希望它可以从 Visual Studio 的工具箱中使用。该类看起来像:

[ToolboxData("<{0}:CustomPanel runat=server></{0}:CustomPanel>")]
public class CustomPanel : Panel
{
}  

到目前为止,一切都很好。该控件继承自面板,一旦添加到工具箱中,就可以轻松地将其拖放到 aspx 页面上。我现在要做的是向此面板添加新控件,例如标签和一些基本的 HTML 标记。我尝试了以下但没有成功:

  [ToolboxData("<{0}:CustomPanel runat=server></{0}:CustomPanel>")]
  public class CustomPanel : Panel
  {
    protected override void OnInit(EventArgs e)
    {
          Label name = new Label();
          name.Text = "Hello jdecuyer!";
          this.Controls.Add(name);
          base.OnInit(e);
     }
  } 

有什么想法吗?

【问题讨论】:

  • 您必须在面板中提供一个位置才能显示标签。为什么不使用 Visual Studio 将标签放在面板上,然后添加面板,标签已经存在?您也没有将标签添加到面板,除非“this”是面板而不是页面,否则您的不完整代码很难解决。
  • 假设OnInit 样本在CustomPanel 中,您的代码看起来是正确的。什么不工作?
  • 是的,“this”是面板,我刚刚又编辑了我的类的代码,抱歉不够清楚。虽然没有抛出错误,但面板内没有显示任何标签。感谢您的意见。

标签: c# asp.net


【解决方案1】:

使这变得相当容易。我会建议: 1.) 然后从设计器创建一个 UserControl 2.) 将您的自定义面板类添加到该用户控件 3.) 添加您认为合适的标签/链接。 4.) 将该 UserControl 添加到您的页面

虽然 Ramhound 是正确的,但您似乎没有给标签一个位置,尽管它应该自动定位到左上角。您将其添加到此,而不是您的面板。

对不起,我对asp没有太多的经验。希望这对您有所帮助。

【讨论】:

  • 是的,创建用户控件要容易一些,我已经设法创建了一个。但是,他们希望我在 Visual Studio 的工具箱中添加一个已编译的控件。我将研究 Yuriy 的示例以了解如何将标签添加到我的面板。点赞,谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-13
  • 2010-11-11
  • 1970-01-01
  • 2017-01-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多