如果在C ++构建器中的表单应用程序中按下 ESC 键,如何实现关闭(或退出)功能?
另外,请注意表单将包含许多组件;它不能只是一个空的形式。 我尝试使用此代码,但每次按 ESC 时它都不起作用。
void __fastcall TForm1::FormKeyPress(TObject *Sender, System::WideChar &Key) {
if (Key == VK_ESCAPE) {
this->Close();
}}
上面的代码不起作用,因为焦点并不总是在窗体上,如果你有更多的组件,如EditBox,你必须在每个事件上禁用VK_ESCAPE
并引用所需的函数(即当然,这是一个微弱的解决方案)。
答案 0 :(得分:3)
将Form的KeyPreview属性设置为true。这样,键盘事件就会在活动控件之前出现在表单上。
答案 1 :(得分:3)
使用TForm::KeyPreview
属性和TForm::OnKeyPress
事件是最好的方法,但是替代方法是在表单上放置一个隐藏的TButton
并将其Cancel
属性设置为是的,然后您可以在Close()
事件中调用OnClick
。