2012-11-06 71 views
0

如果讓我們說我有一個帶有ListView和Update()函數的FormA。然後,我也有一個數學類與函數A()有一些魔術......委託可以用來從A()調用Update()嗎?或者,還有更好的方法?我意識到從另一個類更新一個GUI形式是有風險的。從另一個類調用ListView更新函數...可能嗎?

回答

2

是的。只要Math類不知道它的實際調用,它就沒有那麼大的風險。你只要給它一個粗略的想法通過它從你的表指向所需的功能:

public class MathClass { 
    public Action FunctionToCall { get; set; } 

    public void DoSomeMathOperation() { 
     // do something here.. then call the function: 

     FunctionToCall(); 
    } 
} 

在你的表格你可以這樣做:

// Form.cs 
public void Update() { 
    // this is your update function 
} 

public void DoMathStuff() { 
    MathClass m = new MathClass() { FunctionToCall = Update }; 
    m.DoSomeMathOperation(); // MathClass will end up calling the Update method above. 
} 

你MathClass調用Update,但它沒有知識告訴它調用Update的對象或更新的位置,使它比將對象緊密耦合在一起更安全。

+0

真的不錯的代碼! :)我會測試這一點,也從另一個線程(因爲它的想法).. –

相關問題