0

对于任何可以在这里帮助我的人,我将不胜感激!

我有一个非常小的应用程序,它在运行时使用 for LOOP 创建多个面板。目前,要创建的面板数量来自文本框中输入的值,但最终将由从数据库中读取的整数确定

每个面板都有一个在同一循环中创建的标签

我的问题是,我想在每个面板创建时(在 FOR 循环的每次迭代中)绘制 120 条线,并且我正在使用嵌套的 WHILE 循环来执行此操作

我可以让一切正常工作,面板与标签标题一起创建,但由于某种原因,我无法绘制线条

这是一种测试方法,有人可以帮助我吗?

我目前拥有的代码如下:

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

您可能需要创建一个空图像并在其中绘制,然后将其添加到面板中。另一种选择是从面板派生并覆盖 OnPaint 方法,此时您将绘制图表。

也许有一个 C# Chart 组件可以为您实现这一点。

这是关于呈现自定义控件的 MSDN 参考的链接,这就是您所追求的。

于 2013-02-09T21:54:59.110 回答