当我按 Enter 键时,选项卡控件的选项卡页会关闭
Posted
技术标签:
【中文标题】当我按 Enter 键时,选项卡控件的选项卡页会关闭【英文标题】:Tab pages of a tab control get closed when I press enter 【发布时间】:2012-10-20 18:54:34 【问题描述】:我有一个选项卡控件,其中一些对话框作为选项卡页,每个对话框中都有一个按钮来创建下一个选项卡,这些按钮被设置为默认按钮,所以当我按下回车键时,它会转到下一个选项卡。但是,在您按下这些按钮后,它们会被禁用,并且当您返回该选项卡时,它不允许客户端再次单击下一个按钮,问题是当我按下回车时,按钮被禁用并且没有不再使用默认按钮,标签页将关闭! 似乎输入关闭了对话框!但是当我更改选项卡并再次返回该选项卡时,再次显示对话框!所以这意味着输入不会破坏或关闭该对话框!
按钮启用时的对话框。按回车就像单击按钮: 创建下一个选项卡后的相同对话框: 当下一步按钮被禁用时按回车! 更改选项卡并再次返回该选项卡后的对话框!
我不明白它的行为!请注意,我没有为输入按钮编写任何内容,我只是将这些按钮设置为默认按钮,即使这些按钮不是默认按钮,也会发生这种情况!我该怎么办?
【问题讨论】:
很难猜,截图是代码 sn-p 的糟糕替代品。但是对话框的默认按钮就像 OK 按钮。它关闭对话框。 【参考方案1】:对话框的默认操作(即当您按下回车键时调用的操作,如果焦点不在另一个按钮或捕获回车键的控件中)是调用 OnOk,默认情况下,OnOk 关闭对话框。 所以你必须重写对话框的 OnOK 函数并给它们一个空的主体:
void CMyTabDlg::OnOk()
// Nothing, so it does not close the dialog
另外,您可以将默认按钮设置为其他按钮,但为了安全起见,我还是会做覆盖 OnOk 的事情。
【讨论】:
以上是关于当我按 Enter 键时,选项卡控件的选项卡页会关闭的主要内容,如果未能解决你的问题,请参考以下文章
在带有选项卡式控件的表单中,单击按钮会降低焦点选项卡页中的面板高度,如果移动到另一个选项卡并返回,则会更正