Witam,

Piszę swoją pierwszą grę w C# a będzie to klasyczny Arkanoid.

Struktura mojego programu składa się z klas:

classBall
classBrick
classButton
classForm
classGame
classMain
classMenu
classRacket

Tak wygląda klasa classMain, która uruchamia główny wątek programu.

using System;
using System.Data;
using System.Drawing;
using System.Windows.Forms;

namespace PonyArkanoid
{
    class classMain
    {
        

        public static void Main()
        {
            Application.EnableVisualStyles();
            classForm MainWindow = new classForm();
            classMenu MenuPanel = new classMenu(MainWindow);
            MainWindow.Controls.Add(MenuPanel);
            Application.Run(MainWindow);
            
            
            
        }
    }
}

Widzimy, że wpierw program tworzy formę MainWindow i panel MenuPanel a następnie osadza panel na formie.

Następnie panel MenuPanel tworzy dwa przyciski "StartButton" i "CreditsButton".

namespace PonyArkanoid
{
    public class classMenu:Panel
    {
        

        public classMenu(classForm ParentWindow)
        {
          
            this.Size = new Size(ParentWindow.Size.Width, ParentWindow.Size.Height);
          
            classButton StartButton = new classButton(PonyArkanoid.Properties.Resources.ButtonStartActive,
            PonyArkanoid.Properties.Resources.ButtonStartPassive,"StartButton", new Point(146,330));
            classButton CreditsButton = new classButton(PonyArkanoid.Properties.Resources.ButtonCreditsActive,
            PonyArkanoid.Properties.Resources.ButtonCreditsPassive, "CreditsButton", new Point(140,470));

            this.Controls.Add(StartButton);
            this.Controls.Add(CreditsButton);
            
        }

        protected override void OnPaint(PaintEventArgs e)
        {
            Graphics g = this.CreateGraphics();
            g.DrawImage(PonyArkanoid.Properties.Resources.MenuGFX,0,0);
            base.OnPaint(e);
        }
       
    }
}

I w reszcie klasa opis klasy classButton

using System;
using System.Data;
using System.Drawing;
using System.Windows.Forms;

namespace PonyArkanoid
{
    public class classButton : UserControl
    {
        public Bitmap ActiveState;
        public Bitmap PassiveState;
        public Bitmap ActualState;
        public classForm ParentWindow;

        public classButton(Bitmap ActiveState, Bitmap PassiveState, String Name, Point Location)
        {
            this.ActualState = PassiveState;
            this.Bounds = new Rectangle(0, 0, ActualState.Width-10, ActualState.Height-5);
            this.Location = Location;
            this.Name = Name;
            this.ParentWindow = ParentWindow;
            this.MouseClick += new MouseEventHandler(OnMouseClick);

        }


        protected override void OnPaint(PaintEventArgs e)
        {
            Graphics g = this.CreateGraphics();
            g.DrawImage(ActualState,0,0);
            base.OnPaint(e);
        }

        public void OnMouseClick(object sender, MouseEventArgs e)
        {
            if 
                (((classButton)sender).Name == "CreditsButton")  { Application.Exit(); }
            else
            {
                if (((classButton)sender).Name == "StartButton") { istrukcja usuwająca panelMenu }
                
                ;}
        }
    }
}


Ustawiłem na początek CreditsButton na zamknięcie aplikacji, a chciałbym teraz ustawić StartButton na usunięcie panelu MenuPanel z formy MainWindow. Jak to zrobić w klasie classButton? Czy koniecznie muszę przekazywać referencję do formy i panelu przy tworzeniu klasy obiektów klasy classButton?