@人人都有一个梦想,每天都在圆这个梦...... <-- 记录学习中点滴,一步步成长 ^o^ -->

C# 中使用同一个方法来触发相同类型控件的特定事件(如textbox的Text_Changed)以节省代码

我们可能想在某个panel里所有textbox都通过一个方法把它触发,就不必有重复的代码,
在这 一系列的textbox,任意一个textbox内容改变时,都需要捕捉到,可能还需要做出相应的处理,
(例如,有TextBox1,TextBox2,TextBox3,TextBox4,TextBox5,TextSum,TextSum 用来合计前面5项输入的值,而且要求值改变时,累计值也跟着改变,如果不使用 UpdatePanel或者 其他的Ajax方法实现异步更新,就简单的通过 Text_changed事件来实现)

 

1,最简单的理解是

    让所有的textbox 响应同一个 textbox的textchange事件。

    首先编辑某一个TextBox的Text_changed事件(如TextBox1_TextChanged),其他的TextBox的Text_Changed都指定为该事件。

 

2, 编辑需要执行的 TextChanged事件。

   然后遍历需要执行该事件的控件,发现有人写了类似下面的代码,好像不对,修改后测试也是有问题,等有空再搞清楚这个了

   foreach (Control cc in this.Controls)
            {
               
if (cc is TextBox)
                {

//这句明显是错的,cc实例化后,才会有TextChanged 事件
                   
cc.TextChanged += newEventHandler(cc_TextChanged);
                 }                
            }

 

或者

foreach (Control c in this.Controls)

Type tTemp;
tTemp = c.GetType();
switch (tTemp.ToString().ToLower())

//这里怎么写成 forms,web程序里的 TextBox 是 System.Web.UI.WebControls.TextBox
case "system.windows.forms.textbox":

c.TextChanged +=new ……


           

posted @ 2010-11-22 17:31  有你的城市  阅读(3490)  评论(0)    收藏  举报