[ xxxrugby @ 29.11.2006. 12:06 ] @
Unutar WinForm sam stavio Public RichTextBox.

Te unutar Class-e imam
ili
WinForm wf = new WinFrom()

public neka_funkcija_koja_se_izvrsava()
{
//znaci ovu funkciju sam pozvao i uredno se izvrsava jer ako stavim MessageBox on uredno javlja sto se radi.
// al ovo se nece odradit
wf.rtb.AppendText("neki tekst"); // e al to se nece pojavit na rtb
}


ista stvar samo drugacije pozivanje


Te unutar Class-e imam

public neka_funkcija_koja_se_izvrsava()
{
//znaci ovu funkciju sam pozvao i uredno se izvrsava jer ako stavim MessageBox on uredno javlja sto se radi.
// al ovo se nece odradit
WinForm.rtb.AppendText("neki tekst"); // e al to se nece pojavit na rtb
}

ako probam napravit u WinForm funkciju
public void dodaj(string neki)
{

}
//pozovem iz Classe s
WinForm.dodaj("Yeeeeey")
{

}

i eto error-a [C# Error] Ping.cs(228): An object reference is required for the nonstatic field, method, or property 'test001.MainForm.dodaj_rtbPingReplay(string)'
[ bobanM @ 29.11.2006. 21:36 ] @
Pozdrav,

prvo odakle pozivas tu klasu tj. metodu. Prikazi malo vise koda kako bih mogao da ti kazem gde gresis.

Moja interpretacija

Code:
    
   public class WinForm : Form
   {
        public System.Windows.Forms.RichTextBox rtv;

        private void InitializeComponent()
        {
            this.rtb = new System.Windows.Forms.RichTextBox();
        }
        
        public WinForm()
        {
            InitializeComponent();
        }
   }

   public class Glavna : Form
    {
        private WinForm wf = new WinForm();

        public Glavna()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            wf.Show();
        }

        private void button2_Click(object sender, EventArgs e)
        {
           if(wf!=null) 
               wf.rtb.AppendText("neki tekst");
        }
    }


Radi, provereno!

Nadam se da si na to mislio :)

PS
ne mozes pozivati ne staticne metode iz klase za koju nisi prethodno napravio instancu iste.
[ xxxrugby @ 30.11.2006. 09:24 ] @
imam u WinForm-i ili Glavnoj formi.

Code:
public class MainForm : System.Windows.Forms.Form
{
     public System.Windows.Forms.RichTextBox rtb;

     private void InitializeComponent()
     {
          this.rtb = new System.Windows.Forms.RichTextBox();
     }

                public MainForm()
        {
            //
            // Required for Windows Form Designer support
            //
            InitializeComponent();

            //
            // TODO: Add any constructor code after InitializeComponent call
            //
        }
}


Class-a
Code:
public class Ping
{
     private MainForm mf = new MainForm();

     public void PingHost(string strPingHost, int iPingBytes, uint lngPingCount, uint ngPingTimeout)
     {
          // sad tu ide kod i replay koj bi trebao ic u rtb,.
          mf.rtb.AppendText ("    Minimum = "+iMinTransmitTime.ToString() +"ms, Maximum =  "+iMaxTransmitTime+"ms, Average =  "+tmp.ToString() +"ms");
     }

}


E al mi to ne sljaka. Nece iz te classe stavit replay u rtb s MainFormi.

Hmmmm. Ako ubacim mf.show() onda mi nanovo otvara cijeli MainForm sto mi ne odgovara.
Il ja negdje griješim s krivim pozivanjem.
[ bobanM @ 30.11.2006. 13:01 ] @
Problem: Ti hoces na main formi koja je vec instacirana i pokrenuta da smestis vrednost u rich text box, ako se ne varam.

Greska : Problem je sto ti kreiras novu instancu klase MainForm i ocekujes da se to odnosi na prvu instancu, tu ti je greska. Tvoj kod radi ali ne ono sto ti ocekujes.

Resenje: Prosledi klasi Ping referencu na MainFom i nemoj kreirati novu instancu vec samo prosledi tu referencu u wf varijablu.

Pitanje: Odakle kreiras i pozivas klasu Ping?
[ xxxrugby @ 30.11.2006. 15:00 ] @
Je bobanM imas pravo. To je problem.
Riješio sam taj problemcic na malo gori naćin al sad mi se to čak čini bolje.
Al isto to će mi trebat na drugoj formi pa ču probat napravit.



Pitanje: Odakle kreiras i pozivas klasu Ping?
Iz MainForm klase.
Te radim unutar funkcije poziv na klasu Ping.