2016-05-25 6 views
0

C#でUIフォームがあり、コンボボックスとテキストボックスがあります。私は、ユーザーが有効な入力を選択することを確認するために、テキストボックスに関連付けられた検証済みの検証イベントを持っています。フォームに「結果の表示」ボタンと「結果のエクスポート」ボタンがあります。 2つのボタンのいずれかをクリックすると、必ずテキストボックスの入力が検証されますが、ボタンが行うはずの操作は実行されません。私はボタンがもう一度クリックする必要があるので、ボタンが行うことになっているアクションをトリガーする必要があります。ボタンをクリックすると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(); 
    } 
} 

他のルートは、イベントと同じことをやっていることを示すことになるので、私は、メソッドのルートのファンですが、私は前にそれを行っていません。

関連する問題