Przekazywanie wartości między klasami

Przekazywanie wartości między klasami
M1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 34
0

Witam.Otóż mam form1 i form2.Na form1 mam button który uruchamia mi form2,w form 2 mam trackbar.Chcę ,żeby można było nim ustawić opacity w form 1,zrobiłem coś takiego (nie działa ):

Kopiuj
  private void trackBar1_Scroll_1(object sender, EventArgs e)
        {
            double opacity=Convert.ToDouble(trackBar1.Value);
            Form1 F1 = new Form1();
            F1.Opacity = opacity/100;
        }

Ale żeby sprawdzić czy chociaż w tej form2 dziala coś takiego :

Kopiuj
double opacity=Convert.ToDouble(trackBar1.Value);
            this.Opacity = opacity/100; 

i jest wszystko ok
Proszę o pomoc w tym prostym problemie ;)
Pozdr.

siararadek
  • Rejestracja: dni
  • Ostatnio: dni
0

Dlatego, że w pierwszym przykładzie tworzysz nową instancję Form1. Musisz się dobrać do tej istniejącej.

maszynaz
  • Rejestracja: dni
  • Ostatnio: dni
1

Forma1

Kopiuj
public void buttonclick....
{
    Form2 f2 = new Form2(this); //przekazujesz wskaznik Formy1 do Kontstruktora formy 2
}

Forma2

Kopiuj
partial class Form2
{
private Form1 f1;
public Form2(Form1 f)
{
    f1=f;
}
//teraz  możesz używać f1 jako wskazania na formę 1
}
  • Rejestracja: dni
  • Ostatnio: dni
0

Zrobiłem tak ale teraz w moim form2 ( kiedy wcisne button) nic nie ma (powien byc ten trackbar) okienko jest puste...nic tam nie ma jakby sam form .

RE
  • Rejestracja: dni
  • Ostatnio: dni
0

Stworzyłeś pewnie Form, a nie Form2.

  • Rejestracja: dni
  • Ostatnio: dni
0

Kod w form1 :

Kopiuj
 private void przeźroczystośćToolStripMenuItem_Click(object sender, EventArgs e)
        {
            Form3 f2 = new Form3(this);
            f2.Show();

        }

Kod w form2

Kopiuj
  private Form1 f1;
        public Form3(Form1 f)
        {
          f1=f;
        }
          
        private void trackBar1_Scroll_1(object sender, EventArgs e)
        {
           
                double o = Convert.ToDouble(trackBar1);
                f1.Opacity = o ;
          
Azarien
  • Rejestracja: dni
  • Ostatnio: dni
1
Kopiuj
 Form3 f2
  private Form1 f1;
 public Form3(Form1 f)

weź jakoś ponazywaj te formy, a nie same takie potworki „form3 f2”

  • Rejestracja: dni
  • Ostatnio: dni
0
Kopiuj
 private Tu_chce_zmienic f1;
        public tu_zmieniam(Tu_chce_zmienic f)
        {
          f1=f;
        }
          
        private void trackBar1_Scroll_1(object sender, EventArgs e)
        {
           
                double o = Convert.ToDouble(trackBar1);
                f1.Opacity = o ;
          
            
        } 
Kopiuj
 private void przeźroczystośćToolStripMenuItem_Click(object sender, EventArgs e)
        {
            tu_zmieniam o = new tu_zmieniam(this);
            o.Show();

        } 

Tak może być ? :)

  • Rejestracja: dni
  • Ostatnio: dni
1

Boże ... poczytaj o konwencjach nazewniczych w .NET

  • Rejestracja: dni
  • Ostatnio: dni
1

nie ma różnicy jak to nazwę,jeżeli teraz nie działa to i po zmianie nazwy tez nie będzie

byku_guzio
  • Rejestracja: dni
  • Ostatnio: dni
1

Bez kitu, tego typu tematów są miliony na tym forum. Po co zabierasz się za windows forms, jak nie masz pojęcia o podstawach C#... najmniejszego pojęcia. Nie wiesz czym się różni klasa od jej instancji(obiektu klasy), nie masz pojęcia jak się używa klas i obiektów. Masz dwa wyjścia: albo zaczniesz naukę od podstaw, albo sobie daruj programowanie, bo nic z tego nie będzie.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.