C# 在我的记忆中,我更新了同样的代码
我需要将不同的控制方法和完全相同的代码关联起来。 我现在是这样做的:C# 在我的记忆中,我更新了同样的代码,c#,asp.net,C#,Asp.net,我需要将不同的控制方法和完全相同的代码关联起来。 我现在是这样做的: protected void dgvProperty_ItemInserted(object sender, GridInsertedEventArgs e) { BindItems(); } protected void dgvProperty_ItemDeleted(object sender, GridDeletedEventArgs e) { Binditems(); } protected voi
protected void dgvProperty_ItemInserted(object sender, GridInsertedEventArgs e)
{
BindItems();
}
protected void dgvProperty_ItemDeleted(object sender, GridDeletedEventArgs e)
{
Binditems();
}
protected void dgvProperty_ItemUpdated(object sender, GridUpdatedEventArgs e)
{
BindItems();
}
感觉不对。如何避免重复?不幸的是,这不是因为每个事件的参数都不同。如果gridxxxeventarg都继承自同一个类(即GridEventArgs),那么您可以做得更整洁一些,但我怀疑这里的情况是否如此
通过使用从每个事件调用的单个方法,您正在做正确的事情。我不认为您上面显示的代码有任何“错误”,但可以整合此逻辑 如果dgv对象是您控制的类,则可以让它引发另一个事件,该事件在插入、删除或更新项目时引发。然后你可以简单地听这个事件。或者,您可以对dgv对象进行子类化,以添加上面所示的行为 编辑:这里有一个例子。我在你的示例中快速搜索了事件参数,我猜你使用的是Telerik RadGrid,所以我的示例将基于此,尽管原理是通用的
public class ExampleGrid : RadGrid
{
public ExampleGrid() : base()
{
base.ItemInserted += (o, e) => NotifySomethingChanged();
base.ItemDeleted += (o,e) => NotifySomethingChanged();
base.ItemUpdated += (o,e) => NotifySomethingChanged();
}
public event EventHandler SomethingChanged;
private void NotifySomethingChanged()
{
var handler = this.SomethingChanged;
if (handler != null)
handler(this, EventArgs.Empty);
}
}
现在您可以收听SomethingChanged事件。这只比在控件中附加3个事件处理程序稍微好一点,但是如果您经常这样做,这是值得的如果可能的话,您能给我一个简单的例子吗?