0
private int ValidateData()
{
    int flag = 1;
    if (txtEmpNo.TextLength < 8)
    {
        MessageBox.Show("Employee Number must be 8 Digits Long","Message");
        flag = 0;
    }
     return flag;
}
private void btnProfile_Click(object sender, EventArgs e)
{
    try
    {
        Profile pf = new Profile("");
        if (ValidateData() == 1)
        {
            if (pf!=null)
            {
                pf = new Profile("");
                pf.Focus(); 
            }
            else
            {
               pf = new Profile(txtEmpNo.Text);
               pf.Show();
            }
            Qualification  qa = new Qualification("");
            qa.Close();
            Experience  ex = new Experience("");
            ex.Close();
            History hs = new History("");
            hs.Close();
        }
    }
    catch (Exception ex)
    {


        if (ex is IndexOutOfRangeException)
        {
            MessageBox.Show("Employee Not Found");
        }

        else if (ex is OleDbException)
        {
            MessageBox.Show("Please Enter Employee Valid No.");
        }
        else
        {
            MessageBox.Show(ex.ToString());

        }
    }
}

これらのボタンをクリックすると別の 4 つのフォームが開く 4 つのボタンを含む 1 つのメイン フォームを作成しました。自動的に閉じます...そして2番目のことは、フォームがすでに開いている場合は、もう一度開かずにフォーカスするだけです...

これについてはすでにいくつかのコーディングを行っていますが、望ましい出力を得ることができません。

4

1 に答える 1

0

プロパティを使用Application.OpenFormsして、現在開いているすべてのフォームをアプリケーションから取得します。それらのオブジェクトにアクセスして閉じたり、関連する操作を実行したりできます。お気に入り:

Form2 frm2 = Application.OpenForms["Form2"] as Form2;
if(frm2 != null)
   frm2.Close();

また、コードを少し変更することを検討することもできます。たとえば、メソッドは int の代わりにValidateDataa を返すことができます。bool重要なことに、catch ブロックは最初に特定の例外をキャッチし、次に base をキャッチする必要がありExceptionます。お気に入り:

try
{
    //your code
}
catch (IndexOutOfRangeException e)
{
    //handling
}
catch (OleDbException e)
{
    //handling
}

catch (Exception ex)
{
    //handling
}
于 2013-05-24T05:40:06.837 に答える