我目前是一名学生完成了Visual Basic课程,我的教授坚持认为,如果用户输入需要一个整数,那么我将把所有按键字符都限制为数字/退格/删除。与字母表字符串相同:他希望我只根据程序的要求允许特定的字符,但要使用按键事件来完成。限制用户按键输入是否是一种很好的做法,如果不是,验证输入的最佳方法是什么?
我正在试图限制“名字”和“姓氏”字段只允许字母和退格键,并且正在研究最好的方式来做到这一点,当我遇到一个话题提到这是一个非常糟糕的主意。答复指出,验证应该在提交输入时/之后处理,而不是限制用户在输入时输入他们想要的内容的能力,即使它是错误的(并且我很抱歉,我会链接到了这个地方,但是我今天一直在为这么多的博客/线索等等倾注,现在它已经被掩埋并丢失了)。
无论如何,我认为它是有道理的,尽管我从他的推理中得到的东西只是简单地沿着“它真的让使用者感到沮丧,而且没有必要”。尽管如此,我花了几个小时真的在网上搜索,试图找到通过按键或文本更改事件以外的其他方法验证输入的最佳方法,但实际上并没有任何运气。
我想我的问题是,通过kepress/handled = true/etc等限制用户输入通常是一个不好的做法?如果是这样,为什么?在用户输入验证方面,我应该专注于获得更好的习惯吗?如果是这样,确保用户提交正确类型信息的最佳方法是什么?
我刚刚意识到,我常常根据教科书或特定教师的说法进入习惯,只是意识到这是不能提供最佳解决方案或过时的东西,等等。我真的很想当然,我会开始学习最好的编码习惯,而不是去学习坏习惯并解决它们。也许我正在深入研究一些非常简单的事情,但我希望从那些比我更有经验的人那里得到一些意见。
非常感谢您的时间!
教授是完全错误的。 a)在按Enter/Ok/Done之前,可能没有任何问题b)违反旧Win UI准则(“用户负责”)的规则* 1 *。 c)Windows未设置按键级别验证。它**可以完成,但需要反复重复的代码太多d)还有其他方法专门用于此,ErrorProvider和Validate事件。 e)一个领域的有效值通常取决于另一个领域。他/她还希望你以特定的顺序执行输入(参见'b')。 – Plutonix
谢谢,这是我正在寻找的解释类型。对我来说,允许用户进行控制似乎更好,而你的推理能帮助我理解为什么。感谢您为这项工作命名好的活动。我认为他没有提到任何特定顺序。 – Trillian