Przesylanie przez obiekt

0

witam
dorwalem przyklad z przesylaniem tekstu wpisanego w textbox i wysylanego buttonem z form 1 na form 2

glownie to wyglada tak
w form1 :

		private Button btnSend;
		public TextBox textBox1;

		private void btnSend_Click(object sender, System.EventArgs e)
		{
			Form2 frm = new Form2();
			frm.frm1 = this;
			frm.Show();
		}

w form2:

		private Label label1;
		public Form1 frm1;

		private void Form2_Load(object sender, System.EventArgs e)
		{
			label1.Text = ((Form1)frm1).textBox1.Text;
		}

pominalem bardziej oczywiste fragmenty
mam pytanie zwiazane z tym kodem
w form2 kod label1.Text = ((Form1)frm1).textBox1.Text pobiera z Form1 a dokladniej z textboxa tekst i ustawia go w label
dlaczego tam jest podwojny nawias ? ((Form1)frm1). czy dobrze mysle ze jest to odwolanie do zmiennej publicznej (frm1) a potem bedac juz niejako w niej wywolanie samej formatki (wewnetrzny nawias (Form1)

i drugie pytanie
co sie dzieje w btnSend_Click ?
Form2 frm = new Form2(); // konstruktor klasy Form2 utworzyl instancje o nazwie frm
frm.frm1 = this; //tutaj sie gubie
frm.Show(); //banal ;} pokazanie formatki

0

(Form1)frm1 jest to zwyczajne rzutowanie zmiennej frm1 na klasę Form1 a drugi nawias oznacza, że chcesz jeszcze coś zrobić z tym rzutowanym obiektem.

Form2 frm = new Form2();   // konstruktor klasy Form2 utworzyl instancje o nazwie frm
frm.frm1 = this;                  //przypisanie do zmiennej frm1 wewnątrz frm obiektu w którym się znajdujemy (this), czyli obiektu Form1
frm.Show();                        //banal ;} pokazanie formatki 
0

Tylko po co rzutować frm1 z Form1 na Form1?

0

Tu masz prawidłowy przykład wysyłania do drugiej formy:
Form1.cs (na tej formie są dwa buttony i textbox)

using System;
using System.Windows.Forms;

namespace WindowsFormsApplication15
{
    public partial class Form1 : Form
    {
        private Form2 _form2;
        public Form1()
        {
            InitializeComponent();
        }

        private void btnPokazForm_Click(object sender, EventArgs e)
        {
            _form2 = new Form2(); // nowy obiekt typu Form2
            _form2.Show(); // pokazanie form2
        }

        private void btnWyslij_Click(object sender, EventArgs e)
        {
            _form2.DodajTekst(txtForm1); // dodajesz tekst przekazując w argumencie nazwę textboxa z tej formy
        }
    }
}

Form2.cs (na tej formie jest textbox)

using System.Windows.Forms;

namespace WindowsFormsApplication15
{
    public partial class Form2 : Form
    {
        public Form2()
        {
            InitializeComponent();
        }

        public void DodajTekst(TextBox textBox)
        {
            txtForm2.Text = textBox.Text;
        }
    }
}

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