项目结构:
界面:
Form1.cs 代码 :
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace exe4
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
ImageBase imgbase;
ImageB imgB;
ImageA imgA;
private void Form1_Load(object sender, EventArgs e)
{
imgbase = new ImageBase();
imgA = new ImageA();
imgB = new ImageB();
}
private void button1_Click(object sender, EventArgs e)
{
imgbase = imgA;
CallFunc();
}
private void button2_Click(object sender, EventArgs e)
{
imgbase = imgB;
CallFunc();
}
public void CallFunc()
{
imgbase.func1();
imgbase.func2();
}
}
}
ImageBase.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Drawing;
using System.Windows.Forms;
namespace exe4
{
class ImageBase
{
virtual public void func1()
{
MessageBox.Show("ImageBase->func1");
}
virtual public void func2()
{
MessageBox.Show("ImageBase->func2");
}
}
}
ImageA.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace exe4
{
class ImageA:ImageBase
{
public override void func1()
{
MessageBox.Show("ImageA->func1");
}
}
}
ImageB.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace exe4
{
class ImageB:ImageBase
{
public override void func2()
{
MessageBox.Show("ImageB->func2");
}
}
}
结果:
点击按钮A:
1.ImageA->func1
2.ImageBase->func2
点击按钮B:
1.ImageBase->func1
2.ImageB->func2