通常、イベントまたはデリゲートを使用して、一部のデータをClassBから(つまり2クラス以上)に更新します。ClassA
私がする必要があるのは、から更新することですClassA(ClassCとを介してClassC開かれます)。したがって、からへの直接アクセスはありません。ClassAClassBClassCClassA
で追加のコードを実行する必要がないように、これはどのように可能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の参照を渡すことです。イベントまたはデリゲートを使用する必要があります–可能な限り最良のオプションです。
---
もっとはっきりさせておきます。私はWindowsフォームを作成します。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();
        }
    }
}
次に、Class1から開く別のフォーム(Form2)を作成します。Form1のメソッドをForm2からウェイクアップする(またはデータを渡す)必要があります。
私はあなたがポイントを得たことを望みます。