我在控件中有一个数据网格视图,它显示在应用程序的某个区域中。
我希望在按下F5时刷新此活动网格。
通过处理Key Up事件,当活动网格视图是屏幕上当前聚焦的元素时,这很容易做到这一点,但是当另一个元素(例如菜单栏)是最后一个元素时,这显然不起作用点击了。
在这种情况下,有没有办法跟踪按键?我无法访问数据网格视图/控件之外的代码。
对此的答案可能是明确的否定,但我想确保在做这项工作时我没有遗漏任何明显的东西。
答案 0 :(得分:0)
没有
如果您无法访问当时可能具有焦点的其他控件,则无法将密钥消息从它们传递给您的控件。
答案 1 :(得分:0)
您可以在控件所在的表单上执行一些全局键盘事件处理。
如果将其添加到表单中,则可以在将全局键事件发送到控件之前获取它们。
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
switch (keyData)
{
case Keys.F5:
// Send Refesh Event To Grid
return true; // Mark Key As Handled
// Add Any Extra Command Keys Here
}
return base.ProcessCmdKey(ref msg, keyData); // Resend To Base Function
}
答案 2 :(得分:0)
您是否尝试在Form本身上捕获事件,然后调用数据网格的事件处理程序?您必须将表单的KeyPreview设置为true才能获得键盘事件的通知。
答案 3 :(得分:0)
处理此问题的最佳方法是获取主应用程序表单以处理所有按键。 为此,请将主Form属性“KeyPreview”设置为True。
然后,处理主窗体上的所有KeyUp事件。 有关KeyPreview的更多信息,请访问:http://msdn.microsoft.com/en-us/library/system.windows.forms.form.keypreview.aspx