在很长一段时间里,我在Firefox中有以下书签:
http://www.codeguru.com/csharp/.net/net_general/keyboard/article.php/c4639
我知道,我决定阅读它,并在它应该在一段时间前实现的应用程序中实现它。然而,我看不出这种方法有什么好处……
我知道hastable背后的想法是提供一个集合,在这个集合中我们可以确定没有冲突,每个项目都是唯一的。但是,使用哈希表作为键盘加速器真的有什么大的好处吗?
例如,拥有这个有什么好处(如上面的链接所示):
protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {
Accelerators accel = Accelerators.Unspecified;
if (_accelHash.ContainsKey(AcceleratorKey(keyData))) {
accel = (Accelerators)_accelHash[key];
switch (accel) {
case Accelerators.Home:
DisplayHome();
return true;
}
}
return base.ProcessCmdKey(ref m, keyData);
}关于这一点:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {
switch (keyData) {
case Keys.Alt | Keys.H:
DisplayHome();
return true;
}
return base.ProcessCmdKey(ref m, keyData);
}发布于 2009-11-22 08:09:33
第一个示例是可配置的。您只需更改哈希表的内容,并且可以在运行时更改加速器,让用户对其进行配置。
在这里,哈希表并不完全用于唯一性约束。它的价值来自基于键(在本例中,从字面上看)快速检索数据的能力。
您使用的是.NET 2.0吗?如果是这样的话,您应该使用Dictionary,而不是哈希表,因为您得到的是强类型。
https://stackoverflow.com/questions/1777188
复制相似问题