0

ここで私を助けてくれる人には、とても感謝しています!

for LOOP を使用して実行時に複数のパネルを作成する非常に小さなアプリがあります。現時点では、作成されるパネルの数はテキストボックスに入力された値から導出されますが、最終的にはデータベースから読み取られた整数によって決定されます

各パネルには、同じループで作成されるラベルがあります

私の問題は、各パネルが作成されるたびに (FOR ループの各反復で) 120 行を描画したいことであり、ネストされた WHILE ループでこれを行っています。

パネルはラベルのタイトルと一緒に作成されていますが、何らかの理由で線を引くことができません

それはすべてテストのための1つの方法です。誰か助けてもらえますか?

私が現在持っているコードは次のとおりです。

public void CreatePanels()
{
    int PanelPosX = 50;
    int PanelPosY = 500;
    int LabelPosX = 10;
    int LabelPosY = 10;

    for (int i = 0; i < (Convert.ToInt32(textBox2.Text)); i++)
    {
        Panel pnlOverview = new Panel();
        pnlOverview.Name = "InspectorPanel" + i.ToString();
        pnlOverview.Text = "Inspector Panel " + i.ToString();
        pnlOverview.Location = new Point(PanelPosX, PanelPosY);
        pnlOverview.Size = new Size(974, 136);
        pnlOverview.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
        Controls.Add(pnlOverview);
        PanelPosY += 170;

        Label lblInspectorName = new Label();
        lblInspectorName.Name = "InspectorName" + i.ToString();
        lblInspectorName.Text = " Inspector " + i.ToString();
        lblInspectorName.Width = 100;
        lblInspectorName.Height = 13;
        lblInspectorName.Location = new Point(LabelPosX, LabelPosY);
        lblInspectorName.Size = new Size(974, 136);
        pnlOverview.Controls.Add(lblInspectorName);

        // Draw the Overview Chart

        int x = 10;
        int y = 0;

        Pen OVTable = new Pen(Color.Black, 0);

        while (y < 120)
        {
            Graphics mp = pnlOverview.CreateGraphics();
            mp.DrawLine(OVTable, x, 40, x, 100);
            y++;
            x += 8;
        }
    }
    return;
}

ありがとうイヴァン

4

1 に答える 1

0

空の画像を作成して描画し、それをパネルに追加する必要がある場合があります。もう 1 つのオプションは、Panel から派生させ、OnPaint メソッドをオーバーライドすることです。この時点でグラフを描画します。

おそらく、これに影響を与える C# Chart コンポーネントがあるでしょう。

これは、カスタム コントロールのレンダリングに関する MSDN リファレンスへのリンクです。これは、あなたが追求しているものです。

于 2013-02-09T21:54:59.110 に答える