单击按钮可验证C#中的文本框,但不会触发按钮事件

时间:2016-05-25 22:06:48

标签: c# textbox validating

我在C#中有一些UI表单,带有一堆组合框和一个文本框。我有与文本框关联的验证和验证事件,以确保用户选择有效的输入。我还在表单中有一个“查看结果”和“导出结果”按钮。当我单击这两个按钮中的任何一个时,它肯定会验证文本框输入,但不会执行该按钮应该执行的操作。我不得不再次单击该按钮来触发该按钮应该执行的操作。

我应该怎么做才能让按钮点击事件同时进行验证以及它打算执行的操作?

以下摘自我的代码

private void NameTextBox_Validating(object sender, System.ComponentModel.CancelEventArgs e)
 {
     if (!isValidName())
     {
         e.Cancel = true;
         NameTextBox.Select(0,NameTextBox.Length);
         InvalidPMLabel.Visible = true;
         InvalidPMLabel.Text = "Invalid Name";
         ExportButton.Enabled = false;
         ViewResultsButton.Enabled = false;
         GroupTextBox.Clear();
    }
 }  



private void NameTextBox_Validated(object sender, EventArgs e)
{
    string combination = null;
    int index = -1;
    sql = "select .......";
    dSet = get_data(sql);
    MaxRows = dSet.Tables[0].Rows.Count;
    if (MaxRows != 0)  
    {
        dSet.Clear();
        ...
        ...
    }
    else
    {
        ...
        ...
        ...
    }
    GroupTextBox.Text = dSet.Tables[0].Rows[index]["group"].ToString(); 
}

private void ViewResultsButton_Click(object sender, EventArgs e)
{
    view_marks();
    view_grade();
}

2 个答案:

答案 0 :(得分:0)

我认为当您的代码执行行e.Cancel = true;时,它会阻止按钮事件继续。尝试删除此部分,看看验证后是否执行了该事件。

答案 1 :(得分:0)

所以我注意到你正在使用事件进行验证。 你有2个选择。您可以在onclick事件中调用这些验证事件,或使用方法进行验证并调用该方法。我是方法路线的粉丝所以我将展示

private bool Validated()
{
    bool check;
    //do all your code and set a value for check

    return check;

}


private void ViewResultsButton_Click(object sender, EventArgs e)
{
   if(Validated() == true)
    {

    view_marks();
    view_grade();
    }
}

另一条路线对事件做了同样的事情,但我之前没有做过。