0

C# には、多数のコンボ ボックスとテキスト ボックスを備えた UI フォームがあります。ユーザーが有効な入力を選択していることを確認するために、検証済みおよび検証中のイベントをテキスト ボックスに関連付けています。フォームには「結果の表示」ボタンと「結果のエクスポート」ボタンもあります。2 つのボタンのいずれかをクリックすると、テキスト ボックスの入力は確実に検証されますが、ボタンが実行するはずのアクションは実行されません。ボタンが実行するはずのアクションをトリガーするには、ボタンをもう一度クリックする必要があります。

ボタンクリックイベントが検証と意図したアクションの両方を実行するにはどうすればよいですか?

ここに私のコードからの抜粋があります

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

2 に答える 2

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

他のルートはイベントで同じことをしていますが、私は以前に行ったことがありません。

于 2016-05-25T22:42:43.900 に答える