2

ドロップダウンボックスのあるC#のフォームがあります。そのドロップダウンボックスが変更されたときに、カスタムユーザーコントロールをパネルにロードしたいと思います。コンパイルエラーやランタイムエラーは発生しませんが、目に見えるユーザーコントロールも発生しません。ここでの考え方は、各ユーザーコントロールが異なるシナリオの構成を理解するということです。各シナリオを独自のコントロールにカプセル化したいのですが、ドロップダウンボックスでシナリオを選択できます。これにより、ユーザーが構成を実行するためのコントロールが読み込まれます。ドロップダウンのオプションを調整することで、特定の顧客のシナリオをカスタマイズできます。私が言ったように、私の問題は、どのコントロールも表示されないことです。これは、ドロップダウンインデックス変更イベントハンドラーに使用しているコードです。

private void ddlCollectorType_SelectedIndexChanged (object sender, EventArgs e)
{
    m_currentControl = null;
    pnlDeviceConfig.Controls.Clear ();

    switch ((string) ddlCollectorType.SelectedItem)
    {
        case "SEL-421":
            SEL421ASCIIControl s421 = new SEL421ASCIIControl (this);
            m_currentControl = s421;
            pnlDeviceConfig.Controls.Add (s421);
            break;
        case "SEL-421 (FTP)":
            break;
        case "GE D60":
            GED6061850Control geD60 = new GED6061850Control (this);
            m_currentControl = geD60;
            pnlDeviceConfig.Controls.Add (geD60);
            break;
        case "GE D60 (TFTP)":
            break;
        case "MiCOM P442":
            break;
    }
}

これまでに作成したユーザーコントロールは2つだけなので、caseステートメントは空です。何かを表示するはずの選択を行っても、何も表示されません(デバッガーでcaseステートメントの本文にヒットしていることを確認しました)。どんな助けでも大歓迎です!

4

2 に答える 2

1

私のコメントをフォローアップするために、あなたのコントロールの位置や寸法が設定されていないと思います。

次のようなものを試してください:

...
SEL421ASCIIControl s421 = new SEL421ASCIIControl (this);
m_currentControl = s421;
pnlDeviceConfig.Controls.Add (s421);

// TODO: Set real size and position.
s421.Left = 0;
s421.Top = 0;
s421.Width = 100;
s421.Height = 50;

break;
...

Dockコントロールのプロパティとプロパティを使用することもできAnchorます。

于 2012-08-07T19:00:15.593 に答える
0

1メニューをPlaceHolderに置き換えることができます。彼は、コントロールを追加するための理想的なコントロールです。

ここに例があります:http ://www.developerfusion.com/code/3826/adding-controls-to-placeholders-dynamically/

2そしてあなたの場合、あなたはパネルの目に見える特性を真に調整することを試みることができます

于 2012-08-07T18:51:03.710 に答える