我有一个文本框,一个标准按钮和一个包含几个按钮的工具条。
在文本框的验证事件中,我编码以检查它是否为空白。
如果是,则显示“输入值”消息。单击标准按钮时
文本框是空的,它正确验证并显示消息,但是当时
单击toolstripbutton它没有验证文本框,也没有显示任何消息。似乎我必须在中明确地编写验证代码
toolstripbutton_click
当单个表单上有多个文本框和工具条按钮时,这个事件太麻烦了。
我想知道的是,点击工具条按钮时是否可以触发textbox_validating
?处理工具条真的很头疼。
答案 0 :(得分:3)
在toolstripbutton点击事件中写下以下内容:
Me.Validate()
答案 1 :(得分:2)
ToolStripItem类是特殊的,它们不是从Control派生的。其中一个副作用是它们不会将焦点从主动控制中移开。这可以防止Validating事件被触发。
你可以做几件事。您可以调用文本框'parent的ValidateChildren()方法。或者你可以自己移动焦点:
private void toolStripButton1_Click(object sender, EventArgs e) {
btnSave.Focus();
if (btnSave.Focused) btnSave.PerformClick();
}
答案 2 :(得分:0)
您可以从处理toolstripbutton单击事件的过程中调用textbox_validating过程,但在继续执行其余的toolstripbutton_click事件之前,您可能必须添加一些逻辑以查看它是否通过了验证。既然你说你有很多要验证的文本框,你可能要考虑创建一个返回true或false的Validate()函数并检查所有的文本框。然后你要做的就是检查Validate()= true是否从所有工具条按钮调用相同的函数,而不是一遍又一遍地复制相同的代码。