Własna klasa z obiektami LineShape. Problem przypięcia do formy.

0

Witam!
Proszę o pomoc w wyeliminowaniu zaznaczonego komentarzem w kodzie błędu jaki popełniam :

 
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Microsoft.VisualBasic.PowerPacks;

namespace OsiowanieTurbiny
{
    public partial class Form1 : Form
    {
        class Wirnik
        {
            LineShape sprzegloPrawe;
            LineShape sprzegloLewe;
            LineShape wal;
            int l = 70;
            int h = 10;


            public Wirnik(int x, int y, Form1 uchwyt)
            {
                sprzegloLewe = new LineShape(x, y - h, x, y + h);
                sprzegloPrawe = new LineShape(x+l, y - h, x+l, y + h);
                wal = new LineShape(x, y, x + l, y);

                uchwyt.Controls.Add(sprzegloLewe);// tu pojawia się błąd
                uchwyt.Controls.Add(sprzegloPrawe);// tu pojawia się błąd
                uchwyt.Controls.Add(wal);// tu pojawia się błąd
            }
        }
        //////////////////////////////////////////////////////////
        public Form1()
        {
            InitializeComponent();
            // blokowanie okienka
            this.MaximumSize = this.Size;
            this.MinimumSize = this.Size;
        }


        private void zamknijAplikacjęToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Close();
        }

    }
}

Błąd jaki wyświetla mi kompilator jest następujący:

E:...\Form1.cs(30,17): error CS1502: The best overloaded method match for 'System.Windows.Forms.Control.ControlCollection.Add(System.Windows.Forms.Control)' has some invalid arguments

E:...\Form1.cs(30,37): error CS1503: Argument 1: cannot convert from 'Microsoft.VisualBasic.PowerPacks.LineShape' to 'System.Windows.Forms.Control'

i tak samo dla pozostałych dwóch.
Wiem, że to są różne typy, lecz rzutowanie tu nic nie daje, a zależy mi na logice tej klasy Wirnik-tzn. że ta akurat LineShape będą w tej klasie i przez podanie parametrów do konstruktora zostanie narysowany na formie kształt.
Dzięki za wsparcie.
Hubert

1

Działające poniżej:
sprzegloLewe Nie dziedziczy po Controls dlatego nie możesz go dodać.
Po kolei stwórz kontener(plansze do rysowania)
Wybierz co ma być tą plansza tu jest Form1.
Dodaj do kontenera swoje kształty.

 public partial class Form1 : Form
    {
        class Wirnik
        {
            LineShape sprzegloPrawe;
            LineShape sprzegloLewe;
            LineShape wal;
            int l = 70;
            int h = 10;
            ShapeContainer canvas = new Microsoft.VisualBasic.PowerPacks.ShapeContainer();

            public Wirnik(int x, int y, Form1 uchwyt)
            {

                canvas.Parent = uchwyt;
                // Set the ShapeContainer as the parent of the LineShape.
               
                sprzegloLewe = new LineShape(x, y - h, x, y + h);
                sprzegloPrawe = new LineShape(x + l, y - h, x + l, y + h);
                wal = new LineShape(x, y, x + l, y);

                sprzegloLewe.Parent = canvas;
                sprzegloPrawe.Parent = canvas;

                //uchwyt.Controls.Add(sprzegloLewe);// tu pojawia się błąd
                //uchwyt.Controls.Add(sprzegloPrawe);// tu pojawia się błąd
                //uchwyt.Controls.Add(wal);// tu pojawia się błąd
            }
        }
        //////////////////////////////////////////////////////////
        public Form1()
        {
            InitializeComponent();
            // blokowanie okienka
            this.MaximumSize = this.Size;
            this.MinimumSize = this.Size;

            Wirnik wirnik = new Wirnik(100,100,this);
        }


        private void zamknijAplikacjęToolStripMenuItem_Click(object sender, EventArgs e)
        {
            this.Close();
        }
1

A w jakim celu klasa Wirnik jest zagnieżdżona w Form1?

1 użytkowników online, w tym zalogowanych: 0, gości: 1