2013-02-09 2 views
0

Для всех, кто может помочь мне здесь, я был бы очень благодарен!Добавление графики к компонентам, созданным во время выполнения

У меня очень маленькое приложение, которое создает несколько панелей во время выполнения с помощью LOOP. На данный момент количество панелей, которые будут создан является производным от значения, введенного в текстовом поле, но в конечном счете будет определяться целым числом, считанным из базы данных

Каждой панель имеет метку, которая создается в том же цикле

Моя проблема в том, что я хочу нарисовать 120 строк на каждой панели, поскольку она создана (на каждой итерации цикла FOR), и я делаю это с вложенным контуром 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; 
} 

Благодаря Иван

ответ

0

Вам может понадобиться для создания пустого изображения и втянуть в нее, а затем добавить его в панель. Другой вариант - вывести из панели и переопределить метод OnPaint, после чего вы нарисуете свою диаграмму.

Возможно, есть компонент C# Chart, который будет действовать для вас.

Вот ссылка link на ссылку MSDN об рендеринге пользовательских элементов управления, которые вы преследуете.

Смежные вопросы