C# Delegate een BindingList

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een probleem met een Binding list
in de form heb ik een DatagridView welke ik aan een Bindinglist verbind. ( dit werkt ook)

Maar nu roept de form bij het opstarten de Serverclass aan waarin het volgende staat
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
in de form
   
       public delegate BindingList<DataClient> GetListItem();
        public GetListItem DelegateList;

        DelegateList = new GetListItem(Serverclass.GetListItemFunctie);

    
     de class
 
       public BindingList<DataClient> TcpDataClients = new BindingList<DataClient>();       
       
        public BindingList<DataClient> GetListItemFunctie()
        {
            return TcpDataClients;
        }

        public Server()
        {
         }



Wanneer ik nu in de form de de BindingList ophaal is hij altijd leeg in de datagridview
als ik een foreach doe door de TcpDataClients dan staat hier de data in die er in moet staan.

ik loop er nu de hele avond al op te staren maar zie niet meer waar de fout zit. Ik kan de GetListItemFunctie
toch gewoon als data source gebruiken voor de datagridview ?


als ik op de zelfde manier een string doe dan werkt het wel 8)7

[ Voor 19% gewijzigd door Verwijderd op 15-05-2009 00:48 . Reden: uitleg ]


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Nu online
Ik snap die hele redenering niet :?

Wat je met bovenstaande code doet (de code die in je Form staat), is gewoon een delegate maken (van een eigen bepaald type), en je -simpel gezegd- assigned gewoon je GetListItemFunctie uit je Server class aan die delegate.
Wat doe je verder met die delegate ?

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • Ruudjah
  • Registratie: November 1999
  • Laatst online: 06-09 20:58

Ruudjah

2022

whoami schreef op vrijdag 15 mei 2009 @ 01:00:
Wat doe je verder met die delegate ?
En waarom stuur je de gehele BindingList in de GetListItem method, die een Item impliceert ipv een lijst van items? Afgezien daarvan, lijkt het alsof je de methode wil aanroepen in plaats van een event laten opgooien.

TweakBlog


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ruudjah schreef op vrijdag 15 mei 2009 @ 01:09:
[...]

En waarom stuur je de gehele BindingList in de GetListItem method, die een Item impliceert ipv een lijst van items? Afgezien daarvan, lijkt het alsof je de methode wil aanroepen in plaats van een event laten opgooien.
Ik verwacht een lijst van items voor de gridview,
doe het idd via een methode hoeft niet automatisch via een event.

naamgeving GetListItem had idd beter GetList kunnen zijn


de delegate komt hierin terecht

this.dataGridView1.DataSource=DelegateList;

[ Voor 7% gewijzigd door Verwijderd op 15-05-2009 01:17 ]


Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Nu online
Verwijderd schreef op vrijdag 15 mei 2009 @ 01:15:
de delegate komt hierin terecht

this.dataGridView1.DataSource=DelegateList;
Waarom die omweg met de delegate ? Wat is de reden daarvoor , want die zie ik niet nl.

[ Voor 5% gewijzigd door whoami op 15-05-2009 01:19 ]

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

  • Ruudjah
  • Registratie: November 1999
  • Laatst online: 06-09 20:58

Ruudjah

2022

Delegate is een verwijzing naar een methode.

Onzin om dat te hebben in een form initialisatie moment. Waarom niet gewoon die lijst vullen met dingen en vervolgens binden aan de DataGridView? Dus bijvoorbeeld:
C#:
1
2
3
4
BindingList<Ding> dingen = new BindingList<Ding>();
dingen.Add(new Ding("naam", "rood"));
dingen.Add(new Ding("naam2", "blauw"));
dataGridView1.DataSource = dingen;


En als je die data wil verversen omdat een iets dus data heeft ontvangen via een data verbinding, dan regel je dat met een event. Waarom wil je nou zo graag die delegate?

[ Voor 15% gewijzigd door Ruudjah op 15-05-2009 01:37 ]

TweakBlog


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Als ik hem direct bind aan een control dan kan ik hem niet meer via de thread updaten dus dan moet het wel via een delegate. of zit ik nou de verkeerde kant op te denken ?

als 2 items toevoeg aan de Bindinglist en daarna deze bind aan de control, dan kan ik hem niet meer updaten vanuit de thread die hem gebruikt

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Nu online
Raise een event vanuit je Server class die zegt dat er iets gewijzgd is, wat er gewijzigd is en de aangepaste data bevat, zodanig dat je form er kan op reageren en z'n gridview aanpassen.
Het lijkt me ook geen goed idee om vanuit die event je volledige dataset opnieuw door te sturen .

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
whoami schreef op vrijdag 15 mei 2009 @ 21:55:
Raise een event vanuit je Server class die zegt dat er iets gewijzgd is, wat er gewijzigd is en de aangepaste data bevat, zodanig dat je form er kan op reageren en z'n gridview aanpassen.
Het lijkt me ook geen goed idee om vanuit die event je volledige dataset opnieuw door te sturen .
Ik heb een class met redelijk wat waardes in de bindinglist zit. Verwachting is maximaal 500-1000 classes
tegelijkertijd (Hierbij lopen dan ook 500-1000 communicatie threads).

Dus om elke keer een event aan te roepen met de gewijzigde waarde lijkt me niet ideaal. Het is geen probleem dat de waarde enkele seconden later pas weer gegeven word dus vandaar dat ik er geen event aan wilde koppelen

Acties:
  • 0 Henk 'm!

  • whoami
  • Registratie: December 2000
  • Nu online
500 - 1000 threads in een process ? 8)7
Dus om elke keer een event aan te roepen met de gewijzigde waarde lijkt me niet ideaal. Het is geen probleem dat de waarde enkele seconden later pas weer gegeven word dus vandaar dat ik er geen event aan wilde koppelen
Jouw oplossing nu is ook helemaal niet ideaal ...
Maar zowiezo is het moelijk om er iets zinnigs over te zeggen; ik ben nl. niet helemaal mee wat je nu eigenlijk probeert te bereiken.
Wat doet die 'Server' class bv ?

[ Voor 98% gewijzigd door whoami op 15-05-2009 23:37 ]

https://fgheysels.github.io/


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
whoami schreef op vrijdag 15 mei 2009 @ 23:35:
500 - 1000 threads in een process ? 8)7


[...]
Jouw oplossing nu is ook helemaal niet ideaal ...
Maar zowiezo is het moelijk om er iets zinnigs over te zeggen; ik ben nl. niet helemaal mee wat je nu eigenlijk probeert te bereiken.
Wat doet die 'Server' class bv ?
De server class maakt via tcp communicatie met clients, alle instellingen van de clients komen in de client class terecht. deze client classes zet ik in de bindinglist zodat ik dan makkelijk alle momentele instellingen en gegevens van de clients kan zien.
Pagina: 1