为什么控件里的Button不响应Click事件呢?

leechiyang 2007-09-03 08:26:45
public class TestCtrl : WebControl
{
public Label Message;
public Button Submit;
public TestCtrl()
{
Message = new Label();
Submit = new Button();
Submit.Text = "click me!";
Submit.Click += new EventHandler(SubmitClick);
}

protected override void CreateChildControls()
{
Controls.Add(Message);
Controls.Add(Submit);
base.CreateChildControls();
}
protected override void RenderContents(HtmlTextWriter writer)
{
base.RenderContents(writer);
}
protected void SubmitClick(object sender, EventArgs args)
{
Message.Text = "clicked!";
}
}
...全文
375 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
leechiyang 2007-09-03
  • 打赏
  • 举报
回复
to:Jinglecat(晓风残月 >> 问题需简洁,错误要详细,需求得明确)

我实现INamingContainer 试一试
leechiyang 2007-09-03
  • 打赏
  • 举报
回复
各位兄弟,麻烦看清楚些

我的控件都是在代码里添加的,不是拖进去的。
已经注册了事件啦。
Jinglecat 2007-09-03
  • 打赏
  • 举报
回复
1.
从 WebControl 扩展直接实现自定义复合控件,请确保实现 INamingContainer 接口,

注意,此接口只作为【标记】,无任何方法或者其他成员需要实现

>>>

public class TestCtrl : WebControl, INamingContainer


2.
假如是 asp.net 2.0

普通复合控件应该从 CompositeControl 类派生

复杂数据绑定控件应该从 CompositeDataBoundControl 类派生

可以减轻控件开发者的实现逻辑

vfan2010 2007-09-03
  • 打赏
  • 举报
回复
事件丢失,重新注册。或者删掉button再拖一个。
p405061658 2007-09-03
  • 打赏
  • 举报
回复
注册一下这个事件
leechiyang 2007-09-03
  • 打赏
  • 举报
回复
我的代码是一个自定义Web控件,不是继承自Page的。
如果在Web页面里
Page_Load()
{
Button button = new Button();
button.Text = "test";
button.Click += button_click;
Page.Form.Controls.Add(button);
}

protected void button_click(object sender, EventArgs args)
{
Response.Write("clicked!");
}

会输出clicked!


但是在自定义的控件里Controls.Add(button);后虽然能够把按钮显示出来,但是却不能响应添加的事件
tiaodongdeyinfu 2007-09-03
  • 打赏
  • 举报
回复
这个原因比较多,楼上他们说的都有可能,楼主仔细看看你的程序。
wapit 2007-09-03
  • 打赏
  • 举报
回复
我的一般搞法是,像这种控件先在窗体设计里把它加上,把相关的事件弄好,然后设置其Visible="false",在需要的时候再将他显示出来.
liuyun1987 2007-09-03
  • 打赏
  • 举报
回复
断点跟踪也行。还有若是服务器端控件就是在设计界面双击这个按钮注册一下这个事件。。
地下室小红叔 2007-09-03
  • 打赏
  • 举报
回复
在变量声明里声明form实例(这里默认为Form1 并且保证其有runat="server"属性)
protected System.Web.UI.HtmlControls.HtmlForm Form1;

在page_load里加如下示例代码:
Button bt=new Button();
bt.ID="btNew";
bt.Text="btNew";
bt.Width=100;
Form1.Controls.Add(bt);
当然也可是如上你自己写的那些
auqcesse 2007-09-03
  • 打赏
  • 举报
回复
protected void SubmitClick(object sender, EventArgs e)
{
Message.Text = "clicked!";
}
ojekleen 2007-09-03
  • 打赏
  • 举报
回复
Button是否放在<form></form>里面?
是否runat="server"?
断点下
songle912 2007-09-03
  • 打赏
  • 举报
回复
看响应没响应,自己设个断电跟进去啊

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧