【问题标题】:Toolstripbutton not validating textbox工具条按钮不验证文本框
【发布时间】:2010-11-23 16:32:44
【问题描述】:

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

我想知道的是单击工具条按钮时是否可以触发textbox_validating?处理工具条真的很头疼。

【问题讨论】:

    标签: c# .net vb.net visual-studio-2008


    【解决方案1】:

    ToolStripItem 类是特殊的,它们不是从 Control 派生的。这样做的一个副作用是它们不会将焦点从主动控件上移开。这会阻止 Validating 事件触发。

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

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

    【讨论】:

      【解决方案2】:

      在toolstripbutton点击事件中写如下:

      Me.Validate()
      

      【讨论】:

      • 尽管这可能回答了这个问题,但它没有解释为什么在这种情况下必须偏离一个完全常见的标准模式。汉斯的回答要好得多。
      【解决方案3】:

      您可以从处理工具条按钮单击事件的过程中调用 textbox_validating 过程,但您可能需要添加一些逻辑以查看它是否通过验证,然后再继续处理工具条按钮单击事件的其余部分。既然您说您有很多文本框要验证,您可能需要考虑创建一个返回 true 或 false 并检查所有文本框的 Validate() 函数。然后您所要做的就是检查 Validate() = true 并从所有工具条按钮调用相同的函数,而不是一遍又一遍地复制相同的代码。

      【讨论】:

        猜你喜欢
        • 2012-09-20
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-01-08
        相关资源
        最近更新 更多