gpt4 book ai didi

c# - Windows 窗体转换 Button 类

转载 作者:太空宇宙 更新时间:2023-11-03 19:49:44 28 4
gpt4 key购买 nike

请解释。

在第 3 行我不知道为什么要使用类按钮来转换发件人对象,

第 3 行中的 sender 对象如何运行

第 3 行使用 Button 类的原因是什么?

1. private void button_Click(object sender, EventArgs e)
2. {
3. Button btn = (Button) sender;
4. textBox1.Text = textBox1.Text + btn.Text;
5. }

最佳答案

从声明中可以看出

private void button_Click(object sender, EventArgs e)

唯一的保证是senderobject类型;和对象实例没有Text属性

private void button_Click(object sender, EventArgs e) {
// sender.Text doesn't compile - sender being Object doesn't have Text property
textBox1.Text = textBox1.Text + sender.Text;
}

因此您已转换为具有 Text 属性的类型,这是 Control 的最准确方式:

private void button_Click(object sender, EventArgs e) {
// Control: Button, TextBox, Panel etc.
Control ctrl = sender as Control;

// If we succeed in cast (i.e. sender is a Control)
if (ctrl != null)
textBox1.Text = textBox1.Text + ctrl.Text;
}

当显式转换为 Button

Button btn = (Button) sender; // dangerous code

可能是危险的:例如,您可能想要添加 myPanel.Click += button_Click 而您不检查 cast 的结果(将 myPanel 视为 Button 顺其自然吧)。

关于c# - Windows 窗体转换 Button 类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41220681/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com