有没有办法使用一个事件处理程序从组框内的文本框等任何控件捕获所有keydown事件。 我尝试了groupbox_keydown,但它没有被触发。我尝试在msdn中进行一些研究,他们说groupbox无法获得焦点,因此keydown事件永远不会引发。是否有任何解决方法。 KeyPreview已设置为True。
编辑: 我在组合框中有一些文本框。其中大多数都有默认值或预定义值。我想要的是当用户填写所需的数据并想要跳过一些文本框时,他只需按下一些键,如ctrl + enter即可点击该组框中的按钮或调用程序。
答案 0 :(得分:0)
这似乎工作正常它遍历组框中的控件集合,并将function getSpeed(n) {
return 16 * 1.6 / Math.pow(toRadius(n), 0.32);
};
function mouseMovePlayer() {
blobsPlayer.forEach(function(blob) {
var angle = getMouseAngle(blob.x, blob.y);
var speed = getSpeed(blob.mass);
var x = mouseX - width / 2 + (cameraX - blob.x) * zoom;
var y = mouseY - height / 2 + (cameraY - blob.y) * zoom;
// blob.x += Math.cos(angle) * speed * Math.min(1, Math.pow(x/toRadius(blob.mass), 2));
// blob.y += Math.sin(angle) * speed * Math.min(1, Math.pow(y/toRadius(blob.mass), 2));
blob.x += Math.cos(angle) * speed;
blob.y += Math.sin(angle) * speed;
});
};
事件添加到示例处理程序。
.KeyDown
可能有些控件没有Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
For Each ctl As Control In GroupBox1.Controls
AddHandler ctl.KeyDown, AddressOf GroupBox1Controls_KeyDown
Next
End Sub
Private Sub GroupBox1Controls_KeyDown(sender As Object, e As KeyEventArgs)
MessageBox.Show(DirectCast(sender, Control).Name)
End Sub
个事件,因此您可能希望在代码中添加一个空的.KeyDown
块,但我不会&#39 ;推荐它,因为它可以隐藏代码的其他问题。
Try..Catch..End Try