小山

付出最大努力,追求最高成就,享受最佳生活,收获无悔人生

博客园 首页 新随笔 联系 订阅 管理
在vs.net中经常遇到事件丢失的问题,可以这样避免一下

方法一:
把InitializeComponent中的注册事件,如下
private void InitializeComponent()
{    
    
this.DropDownList1.SelectedIndexChanged += new System.EventHandler(this.DropDownList1_SelectedIndexChanged);            
    
this.Button1.Click += new System.EventHandler(this.Button1_Click);        this.Load += new System.EventHandler(this.Page_Load);
}
剪切到override protected void OnInit(EventArgs e)里面,如下
override protected void OnInit(EventArgs e)
{
    
this.DropDownList1.SelectedIndexChanged += new System.EventHandler(this.DropDownList1_SelectedIndexChanged);            
    
this.Button1.Click += new System.EventHandler(this.Button1_Click);        
        this.Load += new System.EventHandler(this.Page_Load);
}

方法二:
把InitializeComponent中的注册事件,如下
private void InitializeComponent()
{    
    
this.DropDownList1.SelectedIndexChanged += new System.EventHandler(this.DropDownList1_SelectedIndexChanged);            
    
this.Button1.Click += new System.EventHandler(this.Button1_Click);        
        this.Load += new System.EventHandler(this.Page_Load);
}
剪切到你的自定义方法中
private void LoadEvent()
{
    
this.DropDownList1.SelectedIndexChanged += new System.EventHandler(this.DropDownList1_SelectedIndexChanged);            
    
this.Button1.Click += new System.EventHandler(this.Button1_Click);        
        this.Load += new System.EventHandler(this.Page_Load);
}
然后在pageload中调用自定义方法就可以了,如
private void Page_Load(object sender, System.EventArgs e)
{
    
if(!Page.IsPostBack)
    
{
        LoadEvent();
    }

}

每次需要注册方法时,就在刚才的剪切区注册就可以了,这样虽然麻烦一些,但是可以保证事件不会丢失。
posted on 2005-12-26 23:10  小山  阅读(2165)  评论(3)    收藏  举报