- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
请解释。
在第 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)
唯一的保证是sender
是object
类型;和对象
实例没有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/
我遇到过这个 html: 上面的html和这个有什么区别: 最佳答案 来自MDN page on the tag : 对于 type 的属性标签,可能的值是: 提交:按钮将表单数据提交给服务器
Button button= (Button) findViewbyID(R.id.button); 和 Button button = new Button(this); 有什么区别? 最佳答案 有
我是一名优秀的程序员,十分优秀!