【发布时间】:2012-11-05 02:11:50
【问题描述】:
如果超类有一个函数 A() 将标签更改为“Hello World”。如何让子类以相同的结果调用 A()?截至目前,我没有收到编译错误,但文本不会改变!
示例代码:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
FunctionA("Hello");
}
public void FunctionA(string s)
{
label1.Text = s;
}
private void button2_Click(object sender, EventArgs e)
{
Test t = new Test();
}
}
class Test : Form1
{
public Test()
{
FunctionA("World");
}
}
【问题讨论】:
-
Button2_Click 正在创建一个新的表单实例。您是否希望在与 button2 相同的表单实例中更改标签?
-
是的,我意识到:/ 是的。我希望子类触发超类的 FunctionA
-
基类永远不应该知道它的子类。你到底想完成什么?听起来您正在尝试实现访问者模式
-
@RobertSlaney 我在表单 A 上有一个 ListView。还有一个 Update() 函数。我想从另一个班级调用更新。就像我想触发 Update() 运行一样。我可以从子类中调用它,但如果我这样做,程序会崩溃。如果我从 Form A 调用 Update(),它可以工作。它不一定是一个子类..我只是认为这是一个好主意...正在考虑将 Update() 设为静态,但后来我得到了错误
标签: c# winforms class inheritance