在我当前的项目中,我在不同的选项卡中使用了四个网格视图.随着系统的开发,它们有一些共享方法,例如显示自定义工具提示和行时的右键菜单.
我现在正在进行代码清理练习.我在下面看到的是,我现在有四个事件处理程序调用相同的方法.是否可以将事件处理程序更改为直接指向GridMenu,从而避免额外的代码?这会在以后的开发中引起我的问题吗?
显然目前我使用默认的偶数处理程序名称.
private void grdEnquiriesLevel1_ShowGridMenu(object sender, GridMenuEventArgs e)
{
GridMenu(sender, e);
}
private void grdApplicantsLevel1_ShowGridMenu(object sender, GridMenuEventArgs e)
{
GridMenu(sender, e);
}
private void grdApplicationsLevel1_ShowGridMenu(object sender, GridMenuEventArgs e)
{
GridMenu(sender, e);
}
private void grdInterviewsLevel1_ShowGridMenu(object sender, GridMenuEventArgs e)
{
GridMenu(sender, e);
}
private void GridMenu(object sender, GridMenuEventArgs e)
{
GridView view = (GridView)sender;
if (view.CalcHitInfo(e.Point).InRow)
popupMenu1.ShowPopup(Cursor.Position);
}
Run Code Online (Sandbox Code Playgroud)
dan*_*die 10
而不是直接注册GridMenu,创建一个名为的通用事件处理程序Grid_ShowGridMenu.
只需为每个网格注册相同的事件处理程序,而不是为每个网格创建单独的事件处理程序.
grdEnquiriesLevel1.ShowGridMenu += Grid_ShowGridMenu;
grdApplicantsLevel1.ShowGridMenu += Grid_ShowGridMenu;
grdApplicationsLevel1.ShowGridMenu += Grid_ShowGridMenu;
grdInterviewsLevel1.ShowGridMenu += Grid_ShowGridMenu;
private void Grid_ShowGridMenu(object sender, GridMenuEventArgs e)
{
GridMenu((GridView)sender, e.Point);
}
Run Code Online (Sandbox Code Playgroud)
现在,不是sender, e直接传递给GridMenu,只传递必要的值GridMenu并更改签名,GridMenu因此它可以更加可重用.
private void GridMenu(GridView grid, Point hitPoint)
{
if (grid.CalcHitInfo(hitPoint).InRow)
popupMenu1.ShowPopup(Cursor.Position);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1860 次 |
| 最近记录: |