对我来说,验证用户输入的最佳位置是条目小部件的焦点输出事件处理程序(但这只是我的想法)。我尝试从焦点输出事件返回TRUE,并认为这样可以避免将焦点转移到下一个控件并将焦点保持在当前小部件上,但这不行(不按需要工作)。
在验证未通过的情况下抑制将焦点转移到下一个控件的正确方法以及将验证代码放在这些小部件(gtkEntry,gtkSpinButton等)上的位置,以便可以使用两者调用的信号 - 鼠标和键盘动作?
答案 0 :(得分:2)
这不是一个好主意......焦点是(应该)始终由用户拥有。也就是说,用户应该能够将焦点移动到他们认为合适的任何地方。如果你试图引导焦点,或者根据你能想象的任何逻辑来阻止它移动,你可能会对它们感到沮丧。
这肯定会让我感到沮丧!比方说,我在一个盒子里写了一个错误的数据,然后我说,“嘿,这是错的!我想在那里选择那些数据,复制并粘贴在这里”。但我不能这样做,因为程序不会让我离开我现在的盒子而不写可接受的数据。我必须删除错误的数据并输入一些内容......但不是很好。
验证用户条目的最佳方法是实际使用它时。当你保存它或使它生效时。然后你甚至可以弹出一个错误说明,当它关闭时,将焦点移动到第一个错误。
如果您觉得用户可以从早期警告中获益,那么您可以使用颜色(如果出现错误则将框涂成黄色/红色),或者在框旁边添加一个小错误图标。与关注焦点相比,这更具破坏性。