从另一个类调用ListView更新函数......可能吗?

时间:2012-11-06 01:34:21

标签: c# class delegates

如果,假设我有一个带有ListView和Update()函数的FormA。然后我还有一个带有函数A()的Math-Class,它有一些神奇的功能......可以使用委托来从A()调用Update()吗?或者,还有更好的方法?我意识到从另一个班级更新一个gui表格是冒险的....提前谢谢!

1 个答案:

答案 0 :(得分: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或Update是什么..使它比将对象紧密耦合在一起更安全。