我有一个文本框,一个标准按钮和一个包含几个按钮的工具条。在textbox的validating事件中,我编写代码来检查它是否为空。如果是,那么它会显示一条消息'Enter Value‘。当在文本框为空的情况下单击标准按钮时,它会正确地验证并显示消息,但当单击toolstripbutton时,它不会验证文本框,也不会显示任何消息。似乎我必须在toolstripbutton_click事件中显式地编写验证代码,当单个表单上有多个文本框和工具栏按钮时,这太麻烦了。
我想知道的是,当点击toolstripbutton按钮时,是否可以触发textbox_validating?处理工具条真的很让人头疼。
发布于 2011-09-18 22:47:14
在toolstripbutton click event中写入以下内容:
Me.Validate()发布于 2010-11-24 01:28:16
ToolStripItem类是特殊的,它们不是从控件派生的。这样做的一个副作用是,它们不会将焦点从活动控件上移开。这就阻止了验证事件的触发。
你可以做几件事。您可以调用textbox的父对象的ValidateChildren()方法。或者你可以自己移动焦点:
private void toolStripButton1_Click(object sender, EventArgs e) {
btnSave.Focus();
if (btnSave.Focused) btnSave.PerformClick();
}发布于 2010-11-24 01:04:35
您可以从处理toolstripbutton单击事件的过程中调用textbox_validating过程,但在继续处理toolstripbutton_click事件的其余部分之前,可能需要添加一些逻辑来查看它是否通过了验证。既然您说过有很多文本框需要验证,那么您可能需要考虑创建一个Validate()函数,该函数返回true或false并检查所有的文本框。然后,您所要做的就是检查Validate() = true,并从所有的工具条按钮调用相同的函数,而不是一遍又一遍地复制相同的代码。
https://stackoverflow.com/questions/4258372
复制相似问题