C# slanje između classe i formi

poruka: 5
|
čitano: 1.604
|
moderatori: XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
17 godina
neaktivan
offline
C# slanje između classe i formi

dakle imam aplikaciju koja se sastoji od nekoliko windows formi i jedne klase koja obavlja sav posao. klasa se spaja na vanjski server i prikuplja podatke s njega... sad mene zanima na koji načim mogu te podatke proslijediti do svake forme bez da koristim public stringove u svakoj od formi... da li je to moguće riješiti preko threadova? ako je molio bih nekakav tut gdje je to lijepo objašnjeno. najveći probem sa svime što sam probao je taj što se funkcija unutar klase mora odvrtiti do kraja da bi poslala jednoj formi, dok druge uopće ne dohvati, recimo ima pretlju od 0 do 9 i klasa mi pošalje samo broj 9 do prve forme a druge ništa...

https://sites.google.com/site/alloboutpc/
 
0 0 hvala 0
17 godina
neaktivan
offline
Re: C# slanje između classe i formi

public class MyDataClass
{
    public string Data1 { get; set; }
    public string Data2 { get; set; }
    public string Data3 { get; set; }
    // ...
}

interface INotification
{
    void NotifyDataChanged( MyDataClass data );

    string NotificationName { get; }
}

public class NotificationManager
{
    #region Members

    private static SortedList<string, INotification> _NotificationsList = new SortedList<string, INotification>();

    #endregion

    #region Methods

    public static void Register( INotification notification )
    {
        _NotificationsList.Add( notification.NotificationName, notification );
    }

    public static void Unegister( INotification notification )
    {
        _NotificationsList.Remove( notification.NotificationName );
    }

    public static void NotifyDataChanged( MyDataClass data )
    {
        foreach ( var item in _NotificationsList )
        {
            item.Value.NotifyDataChanged( data );
        }
    }

    #endregion
}

public class MyForm : Form, INotification
{
    #region Events

    private void MyForm_Load( object sender, EventArgs e )
    {
        NotificationManager.Register( this );
    }

    private void MyForm_FormClosed( object sender, FormClosedEventArgs e )
    {
        NotificationManager.Unegister( this );
    }

    #endregion

    #region Methods

    public void NotifyDataChanged( MyDataClass data )
    {
        // ovdje uzimaš podatke koje prosljeđuješ
    }

    #endregion

    #region INotification Members

    public string NotificationName
    {
        get { return this.Name; }
    }

    #endregion
}

 

Evo jedan primjer kako da to odradiš. U osnovi svaka forma koju imaš neka bude nasljeđena iz INotification i registrirana u NotificationManager.

Podatke koje dobiješ sa servera spremiš u svoju klasu(u ovom primjeri je to MyDataClass) i proslijediš ih kroz NotificationManager.NotifyDataChanged(data);

To je više manje to, ti prilagodi za svoju aplikaciju kako ti odgovara.

Checked-out since 1983
Poruka je uređivana zadnji put pet 13.1.2012 18:48 (st.srki).
14 godina
neaktivan
offline
Re: C# slanje između classe i formi
pfliper kaže...

dakle imam aplikaciju koja se sastoji od nekoliko windows formi i jedne klase koja obavlja sav posao. klasa se spaja na vanjski server i prikuplja podatke s njega... sad mene zanima na koji načim mogu te podatke proslijediti do svake forme bez da koristim public stringove u svakoj od formi... da li je to moguće riješiti preko threadova? ako je molio bih nekakav tut gdje je to lijepo objašnjeno. najveći probem sa svime što sam probao je taj što se funkcija unutar klase mora odvrtiti do kraja da bi poslala jednoj formi, dok druge uopće ne dohvati, recimo ima pretlju od 0 do 9 i klasa mi pošalje samo broj 9 do prve forme a druge ništa...

Iskoristi polimorfizam i nasljeđivanje, to če ti biti najjednostavnije

BajaBoss
17 godina
neaktivan
offline
C# slanje između classe i formi

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

namespace WindowsFormsApplication1
{
public class MyDataClass
{
public string Data1 { get; set; }
public string Data2 { get; set; }
public string Data3 { get; set; }
}
interface INotification
{
void NotifyDataChanged(MyDataClass data);

string NotificationName { get; }
}

public class NotificationManager
{
#region Members

private static SortedList<string, INotification> _NotificationsList = new SortedList<string, INotification>();

#endregion

#region Methods

public static void Register(INotification notification)
{
_NotificationsList.Add(notification.NotificationName, notification);
}

public static void Unegister(INotification notification)
{
_NotificationsList.Remove(notification.NotificationName);
}

public static void NotifyDataChanged(MyDataClass data)
{
foreach (var item in _NotificationsList)
{
item.Value.NotifyDataChanged(data);
}
}

#endregion
}
}

 

nakon što sam unjeo tvoj kod i pokušao ga kompajlati izbaci mi dvije greške :( , pokušao sam u visual c 2010 
Error 1 Inconsistent accessibility: parameter type 'WindowsFormsApplication1.INotification' is less accessible than method 'WindowsFormsApplication1.NotificationManager.Register(WindowsFormsApplication1.INotification)'

  Error 2 Inconsistent accessibility: parameter type 'WindowsFormsApplication1.INotification' is less accessible than method 'WindowsFormsApplication1.NotificationManager.Unegister(WindowsFormsApplication1.INotification)'

https://sites.google.com/site/alloboutpc/
 
0 0 hvala 0
17 godina
neaktivan
offline
C# slanje između classe i formi

Samo stavi da INotification bude public.

 

public interface INotification

Checked-out since 1983
 
1 0 hvala 1
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice