0

別のフォームでフォームインスタンスを作成してから、そのフォームをメインフォームに追加しようとしました。しかし、私が追加したフォームは表示されていません。すべてのコントロールの上部の中央にそのフォームを表示したいと思います。

これが私のコードです

BBA.Controls.ExecludeSpecialist ucExecludeSpecialist = null;
Form frmContainer = null;

private void btnExclude_Click(object sender, EventArgs e)
{
    if (ucExecludeSpecialist != null)
    {
        if (frmContainer != null)
        {
            frmContainer.Controls.Remove(ucExecludeSpecialist);
            ucExecludeSpecialist = null;
        }
    }

    if (frmContainer != null)
    {
        this.Controls.Remove(frmContainer);
        frmContainer = null;
    }

    frmContainer = new Form();
    frmContainer.ControlBox = false;
    frmContainer.StartPosition = FormStartPosition.Manual;
    frmContainer.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;

    ucExecludeSpecialist = new BBA.Controls.ExecludeSpecialist();
    ucExecludeSpecialist.SaveClicked += 
        new BBA.Controls.ExecludeSpecialist.SaveComplete(OnSaveClicked);
    ucExecludeSpecialist.CloseClicked += 
        new BBA.Controls.ExecludeSpecialist.CloseComplete(OnCloseClicked);
    ucExecludeSpecialist.BringToFront();
    frmContainer.Height = ucExecludeSpecialist.Height;
    frmContainer.Width = ucExecludeSpecialist.Width;
    //frmContainer.Top = this.Height - frmContainer.Height / 2;
    //frmContainer.Left = this.Height - frmContainer.Height / 2;
    frmContainer.BringToFront();
    frmContainer.TopLevel = false;
    frmContainer.Controls.Add(ucExecludeSpecialist);
    this.Controls.Add(frmContainer);
}

中央にある別のフォームのすべてのコントロールの上にそのフォームを表示する方法を教えてください。ありがとう

4

1 に答える 1

1

あなたのコメントが正しいことを理解している場合、あなたの問題は、DataGridが最近追加されたフォームをオーバーレイすることです。試す :

追加した後

frmContainer.Show();

フォームが表示されます。その後、電話をかけucExecludeSpecialist.BringToFront(); た後に電話をかけると、問題を解決する必要がありますfrmContainer.Show();

例 :

    private void button1_Click(object sender, EventArgs e)
    {

        frmContainer = new Form();
        frmContainer.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;

        frmContainer.Height = this.Height / 2;
        frmContainer.Width = this.Width / 2;
        frmContainer.BackColor = Color.Red;
        frmContainer.TopLevel = false;
        this.Controls.Add(frmContainer);
        frmContainer.Show();
        frmContainer.BringToFront();
    }
于 2013-01-22T12:04:39.023 に答える