C#委托通知更改
问题描述:
如何通知我使用委托进行的更改的外部“源”。C#委托通知更改
基本上我有一个表格,我填写该表单并单击一个按钮,将我填充的数据保存到XML表格中作为XML。我希望能够通知使用另一个“实体”可以调用的委托对表单进行的更改。
public void Changes_Made()
{
//yay. Changes made.
}
protected void okButton_Click(object sender, EventArgs e)
{
//...
//save data
//...
Changes_Made();
}
实际情况是:因为我救我的喜好,显示我的数据将刷新并使用当我点击ok_button设置的首电网。这有意义吗?
答
您可以提出通知更改的事件。
public ctor() // Method where you want to hook the event, can be constructor or any thing else
{
//Hook to event
obj.ChangesMade += Changes_Made;
// Here obj is the object of type in which you have okButton_Click
// and ChangesMade event declaration
}
public void Changes_Made()
{
//yay. Changes made. update grid
}
//declare event
public event EventHandler ChangesMade();
protected void okButton_Click(object sender, EventArgs e)
{
//...
//save data
//...
//raise event
if(ChangesMade != null)
ChangesMade(this, new EventArgs());
}
答
如果我理解正确,网格和保存按钮位于同一页面上。如果是这种情况,只需在保存更改后直接拨打PopulateGridData();
或类似内容即可。
我没有任何访问权限。我只是想通知我已经改变了喜好,并且应该根据这些改变显示网格。 – 2011-12-29 11:55:46
他们不在同一页面上。他们在不同的程序集上。我只能设置首选项(应显示哪些列,页面的行数等) – 2011-12-29 11:58:49
然后我没有得到一些东西:您正在使用ASP.NET。如果网格不在同一页面上,但是您保存了数据,则网格会在下次有人重新加载时显示更新的信息。或者你想告诉其他用户的浏览器已加载的网格重新加载新的数据?如果后者是你想要的,解决方案是比C#更多的JavaScript。看看[SignalR](https://github.com/SignalR/SignalR)。 – 2011-12-29 12:01:50