gpt4 book ai didi

c# - 无法在 Panel 中创建 KeyDown 事件

转载 作者:行者123 更新时间:2023-11-30 22:11:44 25 4
gpt4 key购买 nike

我目前正在开发带有面板的 winform。我需要能够使用面板上的向上、向下、向左和向右箭头,并让事情发生。

我尝试用这行代码添加事件:

            (MainPanel as Control).KeyDown += 
new KeyEventHandler(panelKeyPressEventHandler);

使用此 KeyDown 代码:

        public void panelKeyPressEventHandler(object sender, System.Windows.Forms.KeyEventArgs e)
{

MessageBox.Show("Here I am!");

switch (e.KeyCode)
{
case Keys.L:
{

break;
}
case Keys.R:
{

break;
}
case Keys.Up:
{
break;
}
case Keys.Down:
{
break;
}
case Keys.Right:
{
break;
}
case Keys.Left:
{
break;
}

}
}

到目前为止,即使我保证焦点设置在面板上,我也无法让它进入这个 KeyDown 事件函数。 :( 我可以整天敲击键盘,但什么也没有发生。

有没有人对处理面板具有焦点时按下上、下、左、右箭头的最佳方式有任何建议?

谢谢!

最佳答案

面板控件无法获得焦点,也无法选择。焦点控件只能获取“按键事件”。您可能需要在表单或 UserControl 中覆盖 ProcessCmdKey

你需要设置KeyPreview = true

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
switch(keydata)
{
case Keys.Up:
break;
...
}
return base.ProcessCmdKey(ref msg, keyData);
}

关于c# - 无法在 Panel 中创建 KeyDown 事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20079373/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com