gpt4 book ai didi

c# - 在 .Net 中发送击键以进行控制

转载 作者:行者123 更新时间:2023-11-30 18:10:18 26 4
gpt4 key购买 nike

我的 ActiveX 控件包含绘制的各种形状。在控件中使用 CTRL-A 选择所有对象。类似地,CTRL-C 用于复制,CTRL-V 用于粘贴等。

但是,当我在 .Net 应用程序的 Windows 窗体中插入此控件时,它不会收到这些键盘事件。我尝试添加一个 PreviewKey 事件,这确实允许发送某些击键,例如TAB,但不是这些修改后的键。

有人知道如何将修改后的击键重定向到用户控件吗?

谢谢。

最佳答案

ActiveX 控件可能没有焦点,因此没有接收到按键事件。您可能希望在窗体级别处理按键事件,然后在 ActiveX 控件上调用适当的方法。如果您将窗体的 KeyPreview 属性设置为 true,您的窗体将接收窗体上所有控件的按键事件。这样,无论哪个控件当前具有焦点,您的快捷方式都应该起作用。这是一个简单的示例,您可以用来测试它。创建一个带有几个不同控件的新窗体,然后像这样修改代码:

public Form1()
{
InitializeComponent();

KeyPreview = true; // indicates that key events for controls on the form
// should be registered with the form

KeyUp += new KeyEventHandler(Form1_KeyUp);
}

void Form1_KeyUp(object sender, KeyEventArgs e)
{
if (e.Modifiers == Keys.Control)
{
switch (e.KeyCode)
{
case Keys.A:
MessageBox.Show("Ctrl + A was pressed!");
// activeXControl.SelectAll();
break;
case Keys.C:
MessageBox.Show("Ctrl + C was pressed!");
// activeXControl.Copy();
break;
case Keys.V:
MessageBox.Show("Ctrl + V was pressed!");
// activeXControl.Paste();
break;
}
}
}

无论输入组合键时哪个控件获得焦点,都会调用表单的 Form1_KeyUp 方法来处理它。

关于c# - 在 .Net 中发送击键以进行控制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1560022/

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