为什么按钮要点第二次才有反应?(WebForm)

Tenner 2006-04-15 05:19:14
我自己写的一个UserControl
部分代码如下:

protected void Page_Load(object sender, EventArgs e)
{
CreateUI();
}

private void CreateUI()
{
_btn = new Button();
_btn.Click += new EventHandler(_btn_Click);
}

void _btn_Click(object sender, EventArgs e)
{
// 这里进行了一些内部操作
// ...

CreateUI();
}

运行以后,该按钮每点两次才会反应一次,这是为什么?
...全文
233 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
sunchaohuang 2006-04-16
  • 打赏
  • 举报
回复
要重写RAND吧..........UPUP
Tenner 2006-04-16
  • 打赏
  • 举报
回复
还是没解决。。。算了,不用按钮了,换成链接好了,谢谢各位了
Tenner 2006-04-16
  • 打赏
  • 举报
回复
还是不行啊,不论用什么方法,除了整个页面刚打开以后的第一次点击以外,以后都是要点两次才有效,我跟踪过,以后的第一次点击根本不会触发Click事件,好奇怪啊

另外我的程序必须在 _btn_click() 事件中重新执行 CreateUI 是不是和这个有关?
quou2002 2006-04-15
  • 打赏
  • 举报
回复
按你的思路,我用以下的测试代码,测试没问题(临时用PlaceHolder1来装载动态btn)
public class testPage
{
private Button _btn;
protected void Page_Load(object sender, EventArgs e)
{
CreateUI();

}
private void CreateUI()
{
_btn = new Button();
PlaceHolder1.Controls.Add(_btn);
_btn.ID = "btn1";
_btn.Text = "test btn";
_btn.Click += new EventHandler(_btn_Click);
}

void _btn_Click(object sender, EventArgs e)
{
Response.Write(DateTime.Now.ToLongTimeString());
}
}
---------------
内部私有变量回发后的状态保存,根据需要用viewstate、session、cache等保存。
你的问题如果涉及到----动态添加的控件的某些状态值的保存的话,参见:
http://blog.joycode.com/saucer/archive/2004/10/20/35927.aspx



==== 我的邮箱:quou2002@tom.com
~~~~ 我的Blog:http://blog.csdn.net/quou2002
flyinging 2006-04-15
  • 打赏
  • 举报
回复
封装成属性,保存在viewstate里
Tenner 2006-04-15
  • 打赏
  • 举报
回复
还有一个问题就是我点按钮postback以后,所有内部的私有变量值就清零了,有没有办法保留下来?
Tenner 2006-04-15
  • 打赏
  • 举报
回复
我试过加上 if (!IsPostBack),但是加上以后,当按完按钮以后,整个usercontrol就不见了
也就是没有CreateUI来创建界面,按理说postback以后应该会自动保存之前的状态啊,为什么会不见呢,请高手指教~
zorou_fatal 2006-04-15
  • 打赏
  • 举报
回复
protected void Page_Load(object sender, EventArgs e)
{
if(!IsPostBack)
{
CreateUI();
}
}
孟子E章 2006-04-15
  • 打赏
  • 举报
回复
if(!IsPostBack)
{
CreateUI();
}

62,041

社区成员

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

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

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

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