如何在C#中以主窗体创建自定义事件?
我希望:如何在C#中以主窗体创建自定义事件?,c#,events,C#,Events,我希望: public static class A { //do something UpdateListOnMainForm() } 我已经知道我可以通过事件来实现这一点,我尝试创建一个事件,但我不需要任何参数,我只想知道如果类a调用该事件,ListView将更新其数据 有人能帮我创建这个活动吗?或者有更好的方法 提前谢谢你 编辑:当我更改列表视图从中获取数据的列表(其他类)时,至少我正在尝试更新列表视图。您希望静态类能够通过事件触发您的主窗体更新其列表视图,而不必特别了解
public static class A
{
//do something
UpdateListOnMainForm()
}
我已经知道我可以通过事件来实现这一点,我尝试创建一个事件,但我不需要任何参数,我只想知道如果类a调用该事件,ListView将更新其数据
有人能帮我创建这个活动吗?或者有更好的方法
提前谢谢你
编辑:当我更改列表视图从中获取数据的列表(其他类)时,至少我正在尝试更新列表视图。您希望静态类能够通过事件触发您的主窗体更新其列表视图,而不必特别了解主窗体,据我所知。我会这样做:
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;
}
}
}
公共部分类主窗口:窗口
{
公共主窗口()
{
初始化组件();
SingletonA.GetInstance.MyEvent+=UpdateListView;
}
私有void UpdateListView(对象发送方,事件参数e)
{
//更新您的列表视图
}
}
//singleton的延迟初始化-非线程安全请参阅http://www.dotnettricks.com/learn/designpatterns/singleton-design-pattern-dotnet 对于其他线程安全版本
公共类单音
{
私有静态单例实例=null;
私有单声道(){}
公共事件事件处理程序;
void TellFormToUpdateListView()
{
MyEvent?.Invoke(typeof(SingletonA),EventArgs.Empty);
}
公共静态单例GetInstance
{
得到
{
if(实例==null)
instance=new SingletonA();
返回实例;
}
}
}
您是在谈论创建一个无参数方法吗?事件将如何触发?有点像。当我试图创建一个无参数的方法时,我不能从外部调用它,因为main不是静态的。我想像方法调用一样触发它-如果可能的话。好的,谢谢你的回答。这似乎是我想要的。但是我如何调用方法TellFormToUpdateListView()
?@Dominik您想什么时候调用它?你可以在课堂上的任何地方叫它SingletonA。试着从外面叫它-至少我在课堂上需要它,在这里它起作用-我的错。太感谢你了-工作!