如何在C#中以主窗体创建自定义事件?

时间:2016-12-10 17:49:26

标签: c# events

我想要以下内容:

public static class A
{
    //do something
    UpdateListOnMainForm()
}

我已经知道我可以通过Events执行此操作,我尝试创建一个事件,但我不需要任何参数,我只是想要如果A类调用ListView正在更新其数据的事件。

有人可以帮我创建此活动吗?或者也许有更好的方法?

提前谢谢!

编辑:当我更改了ListView从中获取数据的列表(其他类)时,至少我正在尝试更新ListView。

1 个答案:

答案 0 :(得分:0)

根据我的理解,您希望静态类能够触发主窗体以通过事件更新其列表视图,而无需专门了解主窗体。我就是这样做的:

public partial class MainWindow : Window
{
    public MainWindow()
    {
        InitializeComponent();
        SingletonA.GetInstance.MyEvent += UpdateListView;
    }

    private void UpdateListView(object sender, EventArgs e)
    {
        // Update your listview
    }
}

//lazy initialization of singleton - not thread safe see http://www.dotnettricks.com/learn/designpatterns/singleton-design-pattern-dotnet for other thread safe version
public class SingletonA
{
    private static SingletonA instance = null;
    private SingletonA() { }

    public event EventHandler<EventArgs> MyEvent;

    void TellFormToUpdateListView()
    {
        MyEvent?.Invoke(typeof(SingletonA), EventArgs.Empty);
    }

    public static SingletonA GetInstance
    {
        get
        {
            if (instance == null)
                instance = new SingletonA();

            return instance;
        }
    }
}