Witam,
chciałbym poprawić metodę klasy wirnik, tak aby usuwanie instancji z formularza (chcę aby one wizualnie i fizycznie były niszczone) było zgodne ze sztuką. Z góry zakładam że to co zrobiłem w funkcji
public void MakeUnvisable() {//....}
jest z nią niezgodne, lecz nic lepszego nie potrafię.
Czy możecie mi pomóc przy tym kodzie:
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;
public static int l = 70;
public static int h = 10;
ShapeContainer canvas = new 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;
wal.Parent = canvas;
sprzegloPrawe.Parent = canvas;
}
public void MakeUnvisable()
{
sprzegloLewe.Visible = false;
sprzegloPrawe.Visible = false;
wal.Visible = false;
}
~Wirnik()
{
}
}
Stack<Wirnik> wal_wieloczlonowy = new Stack<Wirnik>();
int curX=0, curY=100;
public Form1()
{
InitializeComponent();
// blokowanie okienka
this.MaximumSize = this.Size;
this.MinimumSize = this.Size;
}
private void zamknijAplikacjęToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Close();
}
private void button1_Click(object sender, EventArgs e)
{
curX += (Wirnik.l + 10);
wal_wieloczlonowy.Push(new Wirnik(curX,curY,this));
}
private void button2_Click(object sender, EventArgs e)
{
if (wal_wieloczlonowy.Count != 0)
{
curX -= (Wirnik.l + 10);
wal_wieloczlonowy.Peek().MakeUnvisable(); //
wal_wieloczlonowy.Pop();
}
else
MessageBox.Show("Brak wałów do usuwania ");
}
}
}
Dziękuję za konstruktywne uwagi.
Hubert