2010-11-23 102 views
2

我有一个文本框,一个标准按钮和一个包含几个按钮的工具栏。 在我编码的文本框的验证事件中检查它是否为空。 如果是,则显示一条消息“输入值”。当标准按钮被点击时, 文本框为空,它正确验证并显示消息,但是当单击工具栏按钮时,它不验证文本框,也不显示任何消息。看起来我必须在 toolstripbutton_click事件中明确写出验证码,当单个窗体上有多个文本框和工具栏按钮时,这太麻烦了。Toolstripbutton不验证文本框

我想知道的是textbox_validating可以在点击tooltripbutton时被触发吗?处理toolstrips真的很头疼。

回答

3

写下面的toolstripbutton单击事件:

Me.Validate() 
0

您可以从处理toolstripbutton click事件的过程中调用textbox_validating过程,但您可能必须添加一些逻辑来查看它是否通过了验证,然后继续进行其余的toolstripbutton_click事件。既然你说你有很多文本框要验证,你可能要考虑做一个返回true或false的Validate()函数,并检查所有的文本框。然后,您只需检查Validate()= true并从所有工具栏按钮中调用相同的函数,而不是一遍又一遍复制相同的代码。

1

ToolStripItem类是特殊的,它们不是派生自Control。其中一个副作用就是他们不会将焦点从主动控制中移除。这可以防止验证事件触发。

你可以做几件事。你可以调用文本框父母的ValidateChildren()方法。或者你也可以自己移动焦点:

private void toolStripButton1_Click(object sender, EventArgs e) { 
     btnSave.Focus(); 
     if (btnSave.Focused) btnSave.PerformClick(); 
    }