0

データベース内の既存のレコードを表示するためのdatagridviewを持つフォームPatientInformationがあります。datagridviewに存在するレコードを更新するための別のフォームもあります。

したがって、更新を考慮に入れるためにdatagridviewを更新する必要があります。更新フォームに2つのボタン(キャンセル、更新)があります。ここに問題があります。[更新]ボタンをクリックした後でも、ダイアログの結果は常に「キャンセル」を返します。

私のフォームには、 FormClosedイベントのメソッドも含まれています。これが問題の原因ですか?

私の呼び出しステートメントは次のとおりです。

diagResult = patientUpdateVlObject.ShowDialog();
if (diagResult.ToString() == "Update")
{
   dtgrdviewSearchOutput.Refresh();
   DipslayMessage("Record Updated Successfuly!!");
}
else
   //Do nothing.

更新フォームのフォームクローズメソッドは次のとおりです。

private void PatientUpdate_FormClosed(object sender, FormClosedEventArgs e)
    {
        this.Dispose();
    }
4

2 に答える 2

1

diagResult.ToString() == "Update"を使用すると、コントロール名が文字列に変換されるため、使用しないでください。

このような問題を修正するには、コードを次のように変更する必要があります。

private void buttonMessageBox_Click(object sender, EventArgs e)
{
    if (MessageBox.Show("Click \"OK\" if you agree with this", "MessageBoxTest", MessageBoxButtons.OKCancel)
        == DialogResult.OK)
    {
        MessageBox.Show("User clicked in \"OK\"");
    }
    else
    {
        MessageBox.Show("User clicked in \"Cancel\"");
    }
}

この例では、ToStringメソッドを削除して比較していDialogResult.OKます (MessageBox.Show メソッドは DialogResult オブジェクトを返すため、これを文字列と比較することはできません)。

于 2013-04-02T10:42:35.507 に答える
0

もちろん、あなたは名前をチェックしています:

http://msdn.microsoft.com/en-us/library/2chz8edb.aspx

        if (diagResult == DialogResult.OK)
        {
           dtgrdviewSearchOutput.Refresh();
           DipslayMessage("Record Updated Successfuly!!");
        }
于 2013-04-02T10:31:50.440 に答える