在WinForms解决方案中,您有多个相同类型的控件。您需要为每个控件添加一个事件处理程序,并且在当前时间事件处理程序将执行相同的操作。你不要指望他们之间有任何差异。常见事件处理的最佳做法
例如:
ScheduledPatientsGrid.ProcessGridKey += ScheduledPatientsGrid_ProcessGridKey;
RecentPatientsGrid.ProcessGridKey += RecentPatientsGrid_ProcessGridKey;
RecentPatientsGrid.ProcessGridKey += RecentPatientsGrid_ProcessGridKey;
...
private void ScheduledPatientsGrid_ProcessGridKey(object sender, KeyEventArgs e)
{
...
}
private void RecentPatientsGrid_ProcessGridKey(object sender, KeyEventArgs e)
{
...
}
private void PatientsGrid_ProcessGridKey(object sender, KeyEventArgs e)
{
...
}
现在是它更好地如图所示的下方或上方示出的代码示例中使用不同的像的不同事件之间共享单个事件处理程序?
ScheduledPatientsGrid.ProcessGridKey += ProcessGridKey;
RecentPatientsGrid.ProcessGridKey += ProcessGridKey;
RecentPatientsGrid.ProcessGridKey += ProcessGridKey;
private void ProcessGridKey(object sender, KeyEventArgs e)
{
...
}
在以下页面,微软似乎认为共享是更好的,但是我发现他们没有因为.NET 2.0更新它(即:Visual Studio 2008中)
http://msdn.microsoft.com/en-us/library/4ac48519%28v=vs.90%29.aspx
在这种情况下,是否有一个指南提供了最佳实践建议?
这是有道理的。我从来没有想过设计师方面(可能是因为我从来不用设计师>。>) –
@ChrisSinclair:如果你从不使用设计师,甚至可以使用那些可怜的名字*) –
也许。我倾向于最终阅读事件包装,然后“这是用户点击按钮时发生的事情”(或任何事件),但是第二个想法是,我想事件听众真的不应该关心其中的上下文他们被称为。如果它从鼠标点击改变为按键,那么我的代码的其余部分是否甚至在意呢?它应该在意吗?我想不是。唯一重要的地方就是我在哪里注册该活动。谢谢,我会在下次连线事件时强烈地考虑这一点。 :) –