Button btn = (Button)sender;有大神详细解释下,这句什么意思? sender怎么理解?

privatevoidbtnAdd_Click(objectsender,EventArgse){Buttonbtn=(Button)sender;textBox1.Te... private void btnAdd_Click(object sender, EventArgs e)
{
Button btn = (Button)sender;
textBox1.Text = textBox1.Text+" "+btn.Text+" ";//空格用于分隔数字各运算符
}
展开
 我来答
windblast
2014-09-25 · 知道合伙人软件行家
windblast
知道合伙人软件行家
采纳数:5633 获赞数:13624
毕业于空军第一航空学院电子专业,1991年开始接触电脑,从事多年计算机编程,具有较丰富的经验。

向TA提问 私信TA
展开全部
sender 是 object 对象,而 object 从对象的层次关系来说是最顶层的对象,基本上所有的控件都是object。

所以,通常对于事件的参数,都会以 object sender 这样的形式来定义(子对象可以直接赋给你对象)。

Button btn = (Button)sender; 这句代码是强制将传递过来的 sender 参数(object)转换成 Button。需要提示的是,这种强制转换是建立在你明确知道传递过来的参数是哪种类对象的情况下,否则会出错。
更多追问追答
追问
private void btnAdd_Click(object sender, EventArgs e)
{
//Button btn = (Button)sender;
textBox1.Text = textBox1.Text+" "+btnAdd.Text+" ";//空格用于分隔数字各运算符
}
这样有什么区别吗?
追答
从效果来说,没有什么区别。

主要的区别在于:第一种方式通用性更强。

比如这样一种场合:

多个button其 onclick 代码,基本没什么区别,那么你就可以使用同一个 Click 函数,但这样带来一个问题就是要区分是点击的哪一个button。

第1种方法,由于 btn 是实时计算的,sender 会代之以当前点击的按钮对象。

而你第2个代码,只会是 btnAdd 的 text。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式