通常我们通过使用事件或委托ClassB
来更新一些数据(所以超过 2 个类)。ClassA
我需要做的是ClassA
从ClassC
(ClassC
通过ClassA
和打开ClassB
)更新。所以不能直接访问ClassC
to ClassA
。
这怎么可能,这样我就不需要做任何额外的代码ClassB
?
例子:
class ClassA
{
private void OpenClassB()
{
ClassB b = new ClassB();
b.WorkOnB();
}
public void UpdatingFromClassC()
{
// I have to call this method from ClassC (from method WorkOnC)
}
}
class ClassB
{
public void WorkOnB()
{
//...
//and:
OpenClassC();
}
private void OpenClassC()
{
ClassC c = new ClassC();
c.WorkOnC();
}
}
class ClassC
{
public void WorkOnC()
{
//call UpdatingFromClassC() method on form1 from here!
}
}
我不喜欢传递 Form1 的引用。我必须使用事件或委托——最好的选择。
---
让我更清楚。我做窗体。这是一个带有 2 个类的示例:
public partial class Form1 : Form
{
Class1 c1;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
if (c1 == null)
{
c1 = new Class1();
c1.OnDoWork += new Action(From_Class1_OnDoWork);
c1.DoSomeWork();
}
}
private void From_Class1_OnDoWork()
{
//put your code into here for refreshing
MessageBox.Show("Form1 is being refreshed!");
}
}
class Class1
{
public event Action OnDoWork;
public Class1()
{
//constructor
}
public void DoSomeWork()
{
System.Windows.Forms.MessageBox.Show("Do some work in Class 1");
if (OnDoWork != null)
{
OnDoWork();
}
}
}
现在我想创建另一个表单 (Form2),它将从 Class1 打开。我必须从 Form2 唤醒 Form1 上的方法(或将数据传递给它)。
我希望你明白了。