[英]inheritance between buttons C# - windows form
我对 C# windows 窗体中的简单原理有疑问。 我有两种表格:FormA 和 FormB。 formA 有 buttonA 按钮和一个 messagebox => MessageBox.Show ("FormA");
FormB 继承自 FormA,它的 buttonA 发生了变化,因此我可以编写另一个消息框 => Console.WriteLine ("FormB");
在那之前没问题,但我需要在按钮 FormA 事件之前运行 FormB 按钮的事件,即:首先MessageBox.Show ("FormB")
然后MessageBox.Show ("FormA");
我怎么做?
您可以使用base
关键字调用 base 方法。
让我们假设您有一个从 FormA 继承的 FormB 并且您已经覆盖了 Button1Click 方法:
public override void Button1Click(object sender, EventArgs e)
{
// execute the base class code first
base.Button1Click(sender, e);
// call your code specific for B
}
但是,为此使用继承似乎很奇怪,也许如果您描述您的问题,我们可以找到比这更好的解决方案。
只需从派生类中的重写事件处理程序调用基类的事件处理程序:
using System;
using System.Windows.Forms;
namespace TestApp
{
public class FormA : Form
{
private readonly Button buttonA;
public virtual void ButtonAClick(object sender, EventArgs e)
{
MessageBox.Show("FormA");
}
public FormA()
{
this.buttonA = new Button()
{
Text = "buttonA",
Top = 10,
Left = 10
};
this.buttonA.Click += ButtonAClick;
this.Controls.Add(buttonA);
}
}
public class FormB : FormA
{
public override void ButtonAClick(object sender, EventArgs e)
{
MessageBox.Show("FormB");
base.ButtonAClick(sender, e);
}
}
class Program
{
public static void Main(string[] args)
{
Application.Run(new FormB());
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.