Zapisanie danych i przekazanie z Form1 do Form2

0

Mam problem przy robieniu gry, a więc w skrócie: Mam Textbox do którego wpisuję imiona graczy i podspodem PictureBoxy (wybieram pionek dla każdego gracza), gdy przykładowo wpiszę nazwy dwóch graczy i przyporządkuję po jedym pionku, przenoszę się do głównej planszy gry. I tu pojawia się problem. Chciałbym do tej planszy przekazać te nazwy do groupboxów (osobny panel dla każdego gracza z jego nazwą na górze) a pionki do pictureBoxów na planszy.
Jak mogę te dane zapisać żeby po włączeniu głównej formy się na niej zaktualizowały? Mam nadzieje że w miarę jasno opisałem problem.

kawałek kodu odnoszący się do powyższego problemu:

private void pictureBoxPionki_Click(object sender, EventArgs e)
        {

            string tekst = comboBoxIlosc.SelectedItem.ToString();
            
            switch(tekst)
            {
                
                case "2":

                    if (klikniecia < 1)
                    {
                        ((System.Windows.Forms.PictureBox)sender).Visible = false;
                       
                        textBoxWpiszGracza.Text = form1.groupBoxPlayer1.Text;                 // ????????????????????????
                        textBoxWpiszGracza.Clear();
                        klikniecia++;

                        if (klikniecia == 1)
                        {
                            textBoxWpiszGracza.Text = form1.groupBoxPlayer2.Text;              // ????????????????????????
                            textBoxWpiszGracza.Clear();
                        }
  
                    }
                    else
                    {
                        ((System.Windows.Forms.PictureBox)sender).Visible = false;
                        Form1 form1 = new Form1(this);                //odwołanie do Form1(głownej planszy)
                        form1.Owner = this;
                        form1.ShowDialog();
                    }
                break;
               

               // case "3":
           
            }
             
         }
3
Sebastiano napisał(a):

Jak mogę te dane zapisać żeby po włączeniu głównej formy się na niej zaktualizowały? Mam nadzieje że w miarę jasno opisałem problem.

Dla mnie opis jest raczej niejasny, ale domyślam się, że chcesz najpierw pobrać jakieś dane od użytkownika, a potem przekazać je do okienka, tak?

A zatem utwórz klasę z właściwościami, do których wstawisz te dane, a następnie napisz konstruktor w klasie okienka (czyli Form1), który przyjmie obiekt tej klasy, i zrobi z nim, co potrzeba.

0
somekind napisał(a):
Sebastiano napisał(a):

Jak mogę te dane zapisać żeby po włączeniu głównej formy się na niej zaktualizowały? Mam nadzieje że w miarę jasno opisałem problem.

Dla mnie opis jest raczej niejasny, ale domyślam się, że chcesz najpierw pobrać jakieś dane od użytkownika, a potem przekazać je do okienka, tak?

A zatem utwórz klasę z właściwościami, do których wstawisz te dane, a następnie napisz konstruktor w klasie okienka (czyli Form1), który przyjmie obiekt tej klasy, i zrobi z nim, co potrzeba.

Zagadza się, tylko okno głównej planszy (do której mają byc przekazane dane) ma uaktywaniać się dopiero w momencie, gdy wpiszę kolejno nazwy 4 graczy i przypiszę im pionki. Dlatego do tego czasu te atrybuty musza być gdzies przechowywane aby przekazać je w odpowiednie miejsca do planszy głównej:)

1

Nie do końca rozumiem co chcesz zrobić, ale dam na prędko napisany przykład:

class DialogForm : Form
{
   public string Name1 {get; set; }
   public string Name2 {get; set; }
   public string Name2 {get; set; }
   public string Name2 {get; set; }
   
   public DialogForm()
   {
      InitializeComponents();
   }
   //......
   private void SetName1()
   {
      Name1 = "The Name Of The One";
   }
}

class Form1 : Form
{
///.......
   public void SomeButton_Click(object sender, eventArgs e)
   {
      var dialog = new DialogForm();
      dialog.ShowDialog(); 
      string name1 = dialog.Name1;
   }
}

Tutaj wywołuję okno dialogowe w głównym oknie. Okno dialogowe wpisuje dane do swoich PUBLICZNYCH właściwości, które później okno główne może odczytać. Proste.
Sposób przedstawiony przez @dealen pogwałca wszelkie zasady projektowania obiektowego.

0

@Sarrus, Twój sposób za to gwałci co najmniej SRP, a może też KISS i jeszcze kilka zasad.

Czemu te właściwości mają publiczne gettery, skoro te dane są potrzebne wyłącznie na PRYWATNE potrzeby Form1?

0

@somekind Bo pisane było na prędce. Masz rację - te właściwości powinny mieć prywatne, ale settery.
Ciekaw jestem w jaki sposób złamane zostały wg. Ciebie te zasady w tym krótkim przykładzie.

0
Sarrus napisał(a):

@somekind Bo pisane było na prędce. Masz rację - te właściwości powinny mieć prywatne, ale settery.
Ciekaw jestem w jaki sposób złamane zostały wg. Ciebie te zasady w tym krótkim przykładzie.

Co do całego projektu to właśnie staram się go robić w MVC więc akcesory na pewno będą umieszczone w osobnej klasie:) Dzieki za pomoc.

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