2016-05-25 3 views
0

У меня есть форма UI на C# с кучей комбинированных ящиков и текстовое поле. У меня есть проверенные и проверенные события, связанные с текстовым полем, чтобы убедиться, что пользователь выбрал правильный ввод. У меня также есть кнопки «Посмотреть результаты» и «Экспортировать результаты» в форме. Когда я нажимаю на любую из двух кнопок, он, несомненно, проверяет ввод текстового поля, но не выполняет действия, которые должна выполнять кнопка. Мне нужно снова нажать кнопку, чтобы вызвать действие, которое должна выполнить кнопка.Нажатие кнопки проверяет текстовое поле на C#, но не вызывает событие кнопки

Что делать, чтобы событие нажатия кнопки выполняло как проверку, так и действие, которое оно предназначено?

Вот выдержка из моего кода

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(); 
} 

ответ

0

Я думаю, что, когда ваш код выполнить линию e.Cancel = true; предотвращает событие кнопки для продолжения. Попробуйте удалить эту часть и посмотреть, выполняется ли событие после проверки.

+0

Спасибо, Vyrira. Однако удаление этого не получилось. –

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(); 
    } 
} 

Другой путь делает то же самое с событиями, но я не сделал этого раньше.