C# 向运行时创建的组件添加图形

C# 向运行时创建的组件添加图形,c#,C#,对于任何能在这里帮助我的人,我将非常感激 我有一个非常小的应用程序,它在运行时用for循环创建几个面板。目前,要创建的面板数量是从文本框中输入的值派生出来的,但最终将由从数据库读取的整数决定 每个面板都有一个在同一循环中创建的标签 我的问题是,我想在创建面板时(在FOR循环的每次迭代中)在每个面板中绘制120条线,我使用嵌套的WHILE循环来实现这一点 我可以让一切正常工作,面板与标签标题一起创建,但由于某些原因,我无法绘制线条 这是一种测试方法,有人能帮我吗 我目前拥有的代码如下: publi

对于任何能在这里帮助我的人,我将非常感激

我有一个非常小的应用程序,它在运行时用for循环创建几个面板。目前,要创建的面板数量是从文本框中输入的值派生出来的,但最终将由从数据库读取的整数决定

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

我的问题是,我想在创建面板时(在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;
}
public void CreatePanels()
{
intpanelposx=50;
int-PanelPosY=500;
int-LabelPosX=10;
int-LabelPosY=10;
对于(int i=0;i<(Convert.ToInt32(textBox2.Text));i++)
{
面板pnlOverview=新面板();
pnlOverview.Name=“InspectorPanel”+i.ToString();
pnlOverview.Text=“Inspector Panel”+i.ToString();
pnlOverview.Location=新点(PanelPosX、PanelPosY);
pnlOverview.Size=新尺寸(974136);
pnlOverview.BorderStyle=System.Windows.Forms.BorderStyle.FixedSingle;
控件。添加(pnlOverview);
PanelPosY+=170;
标签名称=新标签();
lblinstName.Name=“InspectorName”+i.ToString();
lblinstName.Text=“Inspector”+i.ToString();
LblinName.Width=100;
LblinName.Height=13;
LblInName.Location=新点(LabelPosX、LabelPosY);
LblinName.Size=新尺寸(974136);
pnlOverview.Controls.Add(名称);
//绘制总览图
int x=10;
int y=0;
Pen OVTable=新笔(颜色:黑色,0);
而(y<120)
{
Graphics mp=pnlOverview.CreateGraphics();
mp.抽绳(可折叠,x,40,x,100);
y++;
x+=8;
}
}
返回;
}
谢谢
Ivan

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

也许有一个C#图组件会对您产生影响

下面是有关呈现自定义控件的MSDN参考,这正是您所追求的