如果超类具有将标签更改为“Hello World”的函数A()。如何让子类调用具有相同结果的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");
}
}
答案 0 :(得分:0)
Forms
必须拥有自己的Label
控件才能显示消息。您可能正在使用一个Label
来显示不属于显示Form
的消息。
我不确定要尝试实现什么,但为什么不将Label
控件传递给FunctionA以这种方式修改消息:
public void FunctionA(ref Label lbl, string s)
{
lbl.Text = s;
}
ADDED:您可以这样做:
首先创建FormA
。
static void Main()
{
//...
FormA frmA = new FormA();
Application.Run(frmA);
}
将FormA
的实例传递给FormB
,方法是在FormA
内为FormB
中的任何操作公开参数化构造函数。
FormB frmB = new FormB(frmA);
//...
public partial class FormB : Form
{
public FormB()
{
InitializeComponent();
}
//parameterized constructor
public FormB(FormA obj)
{
FormA = obj;
InitializeComponent();
}
public FormA FormA { get; set; }
}
答案 1 :(得分:0)
在运行主窗体之前实例化窗体。将form1引用分配给form2
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Form1 mainForm = new Form1();
new Form2() { Form1 = mainForm }.Show();
Application.Run(mainForm);
}
}
public partial class Form2 : Form
{
public Form2()
{
InitializeComponent();
}
public Form1 Form1 { get; set; }
private void button1_Click(object sender, EventArgs e)
{
this.Form1.Update("World");
}
}
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
this.Update("Hello");
}
public void Update(string text)
{
this.label1.Text = text;
}
}