• 12 odgovora
  • 3.914 pregleda
prosledjivanje parametera 23.11.2006. u 09:47 · pre 242 meseci #1
Vjerovatno je bilo dosta odgovora na ovu temu ali meni treba neki jednostavniji odgovor posto sam pocetnik>
Kako da rijesim ovaj problem (ako se tako moze nazvati)
U jednoj formi npr. form1 imam neku promjenjivu koju dalje koristim u kodu. Klikom na dugme na form1 otvaram novu formu form2 u kojoj se nalazi textbox u kojoj treba da se ispise vrijednost promjenjive iz form1. Ako ja tu vrijednost u form2 promjenim i kliknem na dugme npr. OK, hocu da mi se promjenjivoj u form1 dodjeli ta nova vrijednost.

Kako mogu da napravim neku temp klasu npr. clsTemp koja ce mi sluziti kao "buffer" u kojoj ce mi se nalaziti promjenjive i njihove vrijednosti, ta da lako mogu da citam te vrijednosti i upisujem nove i da ih mogu citati iz razlicitih formi.

HVALA !!!
Re: prosledjivanje parametera 23.11.2006. u 09:53 · pre 242 meseci #2
Bilo i previse :)

Ja bih napravio jednu baznu klasu (izvedenu iz Forms klase) u kojoj bih potrpao te promenljive sa static scopom i sve forme koje treba da koriste te promenljive bih nasledio iz te klase.
Potpis
America national sport is called baseballs. It very similar to our sport, shurik, where we take dogs, shoot them in a field and then have a party.
Re: prosledjivanje parametera 23.11.2006. u 10:07 · pre 242 meseci #3
Citat:
Ja bih napravio jednu baznu klasu (izvedenu iz Forms klase) u kojoj bih potrpao te promenljive sa static scopom i sve forme koje treba da koriste te promenljive bih nasledio iz te klase.


i ja bi to sigurno tako uradio, jos samo ako mozete da mi objesnite kako se to radi, mali primjer

POCETNIK
Re: prosledjivanje parametera 23.11.2006. u 10:21 · pre 242 meseci #4
Najprostije resenje:

U prvoj formi (Form1), odmah nakon definicije klase definises promenljivu:
Code:
public static string Promenljiva;

ja sam stavio tip "string", ti stavi ono sto ti treba

U drugoj formi (Form2) pristupas promenljivoj:
Code:
Form1.Promenljiva = ...

Potpis
Idemo dalje
Re: prosledjivanje parametera 23.11.2006. u 10:38 · pre 242 meseci #5
colke77 probao sam i moze mi pomoci,
kako da to rijesim sa klasom, tj. da u jednoj klasi drzim sve promjenjime koje mi trebaju i da ih mogu koristiti iz razlicitih formi.
Re: prosledjivanje parametera 23.11.2006. u 10:49 · pre 242 meseci #6
Napravis novu klasu i nazoves je NovaKlasa.

U novoj klasi definises promenljive odmah nakon definicije klase
Code:

public static string prom_1;
public static int prom_2;
public static bool prom_3;


Promenljivama pristupas iz bilo koje forme
NovaKlasa.prom_1, NovaKlasa.prom_2, NovaKlasa.prom_3 ...

mnogo prosto, zar ne?
Potpis
Idemo dalje
Re: prosledjivanje parametera 23.11.2006. u 11:12 · pre 242 meseci #8
Ja sam mislio nesto kao:

Code:

// Bazna klasa koju ce ostale forme da naslede
class SharedFormBase : System.Windows.Forms{
 protected static string m_strName;//ovo je varijabla koju hoce svi :)
// .... ostalo smece

//Ovaj property je opciono, ali kod izgleda urednije :)
 public static string SomeName{
   get{ return this.m_strName;}
   set{ this.m_strName = value;}
}
}

//Primer jedne klase koja je forma
class Form1:SharedFormBase{
 //...... konstruktor, init i ostalo generisano smece od VS-a

// Metoda koja nesto radi sa tim stringom
 public void Foo(){
   this.m_strName = "Pera";
   // ili
   SomeName = "Pera";

   textBox1.Text = m_strName;
   // ili
   textBox1.Text = SomeName;
 }
}


Sigurno ima gresaka, nemoj samo copy+paste, pa da kukas ;) Just kidding, ako treba pomoc pishi :)
Potpis
America national sport is called baseballs. It very similar to our sport, shurik, where we take dogs, shoot them in a field and then have a party.
Re: prosledjivanje parametera 23.11.2006. u 11:42 · pre 242 meseci #9
ovako izgleda kompletna klasa:
Code:
using System;
using System.Collections.Generic;
using System.Text;

namespace EanGenerator
{
    public class clsTemp
    {
        protected static double horizontalSpacing;
        protected static double verticalSpacing;

        public clsTemp() { }

        public static double hSpecing
        {
            get { return horizontalSpacing; }
            set { horizontalSpacing = value; }
        }
        public static double vSpecing
        {
            get { return verticalSpacing; }
            set { verticalSpacing = value; }
        }
    }
}


radi mi, ali mi nije jasno zasto mi ne radi kada stavim "this"
get { return this.horizontalSpacing; }
set { this.horizontalSpacing = value; }

i onda iz drugih formi pozivam na ovaj nacin:
double d = clsTemp.hSpacing;
Re: prosledjivanje parametera 23.11.2006. u 12:13 · pre 242 meseci #10
Sorry, my bad :) Na static clanice ne moze da se koristi this jer je this za clanice instance klase, a static polja se ne pripadaju instanci vec klasi i drugacije se alociraju pri pokretanju aplikacije.

Uprosteno, kada instanciras novu klasu alocira se memorija za taj objekat (ali samo za promenljive !) i unutar klase this pokazuje na tu lokaciju. Medjutim polja koje su static se ne alociraju, one su alocirane prilikom pokretanja aplikacije na 'fiksnu' lokaciju u memoriji (kako bi mogao bilo koji objekat da im pristupi) i ne zavise od adrese objekta.

Nadam se da sam uspeo da objasnim :)
Potpis
America national sport is called baseballs. It very similar to our sport, shurik, where we take dogs, shoot them in a field and then have a party.
Re: prosledjivanje parametera 23.11.2006. u 13:18 · pre 242 meseci #12
Evo ti nesto pa ako moze malo prouci. Ovo sam ja pravio kad sam bio tek početnik iako nisam ni sad daleko dogurao :).

---------------
KLASA testKlasa
---------------

using System;
using System.Collections.Generic;
using System.Text;

namespace test_class
{
public class testKlasa
{
public testKlasa() //Koristenje konstruktora za inicijalizaciju objekta, kojeg kasnije koristimo objekt imeobjekta = new objekt()
{
}

public int zbroj(int argument1)
{
int rezultat = argument1 + argument1;
return rezultat;
}
}
}


U klasi testKlasa definirana je metoda zbroj, koju kasniej koristimo u glavnom programu. Na ovaj
nacin mozemo definirati i ostale metode u posebnim klasama i pozivati ih kad nam trebaju.


--------
FORM1.cs
--------

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace test_class
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}

private void button1_Click(object sender, EventArgs e)
{
int argument2 = 4;
testKlasa testna = new testKlasa();
MessageBox.Show("Primaoc je " + testna.zbroj(argument2));
}
}
}

Jasno se vidi pozivanje konstruktora napravljene klase i koristenje metode kao i propustanje parametara kroz metodu.
Re: prosledjivanje parametera 23.11.2006. u 14:30 · pre 242 meseci #13
@mvasicdo

Bojim se da me nisi ukapirao za ovu baznu klasu. Evo primer sta sam 'teo da kazem.
Potpis
America national sport is called baseballs. It very similar to our sport, shurik, where we take dogs, shoot them in a field and then have a party.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme