我有一个具有(除其他外)三个按钮的基本面板类。我在两个不同的配置对话中使用这个基类的子类。两个对话都有一个确定按钮设置为接受按钮。
在其中一个对话框中,如果我单击基类中的一个按钮,焦点立即返回到 OK 按钮,因此按回车键按预期工作。
在另一个对话框中,焦点保持在基类中被单击的按钮(如果已启用),或者如果单击的按钮不再启用,则移动到下一个按钮。
在任何一个派生类中都没有处理基类按钮单击事件的代码。
任何人的想法?
我不确定您的第一个对话框中发生了什么,因为它似乎没有按照我期望的方式运行。第二个对话框听起来更像标准行为。
在 Windows 窗体中,AcceptButton 属性仅在按下 Enter 时才起作用,否则不会导致任何操作。在您的两个示例中,单击按钮应将焦点移至该按钮,然后按 Enter 将导致再次单击该按钮。
无论如何,我认为通常最好坚持 Windows 用户界面指南,而不是将输入焦点自动更改回 OK 按钮。如果用户单击其他按钮之一,焦点应该保持在那里,直到他们移动它。
我不知道您使用的是什么语言,但按钮类应该有一个焦点方法,可以突出显示它以按 Enter 键。在 click 方法中,或者当你打开对话框时,你可以调用这个方法来使你想要的按钮获得表单的焦点
c#
myButton.Focus();