gpt4 book ai didi

c# - C#中模拟按钮点击的按键

转载 作者:行者123 更新时间:2023-12-03 21:57:21 24 4
gpt4 key购买 nike

好的,我正在制作一个井字游戏来帮助我学习 C#。我正在尝试为其添加一些功能,因此我希望人们能够在计算机上使用 NumPad 来模拟点击按钮。

这是我所拥有的,但是当我使用 NumPad 时,按钮没有点击。你们中有人能看出原因吗?

    //===============================
// start NumPad Simulate Clicks
// NumPad MyButtons
// 7 8 9 1 2 3
// 4 5 6 4 5 6
// 1 2 3 7 8 9
//===============================
public void myControl_NumPad7(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.NumPad7)
{
button1_Click(null, null);
}
}
public void myControl_NumPad8(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.NumPad8)
{
button2_Click(null, null);
}
}
public void myControl_NumPad9(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.NumPad9)
{
button3_Click(null, null);
}
}
public void myControl_NumPad4(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.NumPad4)
{
button4_Click(null, null);
}
}
public void myControl_NumPad5(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.NumPad5)
{
button5_Click(null, null);
}
}
public void myControl_NumPad6(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.NumPad6)
{
button6_Click(null, null);
}
}
public void myControl_NumPad1(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.NumPad1)
{
button7_Click(null, null);
}
}
public void myControl_NumPad2(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.NumPad2)
{
button8_Click(null, null);
}
}
public void myControl_NumPad3(object sender, KeyPressEventArgs e)
{
if (e.KeyChar == (char)Keys.NumPad3)
{
button9_Click(null, null);
}
}

最佳答案

编辑
注意到我必须更清楚我的意思...

根据您发布的代码,我怀疑您有 9 个控件添加了按键事件。这些控件只有在获得焦点时才会接收按键事件。

要全局处理表单的键,您必须将 Form.KeyPreview 设置为 true。此外,我不会像您那样处理键,而是添加一个 Form.KeyDown 事件并编写如下内容:

switch (e.KeyCode)
{
case Keys.NumPad9:
e.Handled = true;
button3.PerformClick();
break;
case Keys.NumPad8:
e.Handled = true;
button2.PerformClick();
break;
// And so on
}

这将处理表单中的 NumPad 键 - 然后您可以删除您在问题中发布的所有事件处理程序。

要以编程方式“单击”一个按钮,您应该使用 Button.PerformClick() 方法,因为可以将多个事件处理程序添加到单击事件中,否则将不会调用这些事件处理程序。

编辑 2
switch 语句的语法无效。当然,每个“案例”都必须以 case 关键字开头……现在它应该可以工作了。

关于c# - C#中模拟按钮点击的按键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1807483/

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