Avatar billede ircnoob Nybegynder
11. marts 2007 - 23:45 Der er 14 kommentarer

Metode kald virker ikke, hvorfor ?

Hej,
jeg forstår ikke lige, hvad jeg gør galt her,
så er sikkert noget tåbeligt..

Har en klasse,
hvis jeg her kalder metoden

SetColumns();

som består af

public void SetColumns()
        {
            dataGridView1.Columns["fornavn"].Visible = false;   
       
        }

så virker det fint...

Nå, men så når jeg i en anden klasse prøver at kalde samme metode går det galt..
---
showmembers members = new showmembers();
members.SetColumns();
---

Får fejlen: Object reference not set to an instance of an object..
Begge klasser er to usercontrols.. hvad er problemet ?
Avatar billede softspot Forsker
12. marts 2007 - 00:49 #1
Givetvis fordi dataGridView1 ikke findes i det sidste scenarie...
Avatar billede softspot Forsker
12. marts 2007 - 00:50 #2
...eller fordi dit gridview ikke er bundet til en kilde og derfor ikke har en kolonne som hedder fornavn.
Avatar billede ircnoob Nybegynder
12. marts 2007 - 01:02 #3
... øh, er jo samme metode de kalder, så er jo tvilsomt om den første klasse pludselig finder på at 'slette" datagridview'et .. og jo den har jo en kolonne ved navn fornavn, for metoden virker som sagt, når den bliver kaldt fra dens egen klasse af .. er det samme datagridview jeg ønsker at påvirke begge gange, med samme metode, blot fra 2 forskellige klasser..
Avatar billede hmortensen Nybegynder
12. marts 2007 - 06:53 #4
DataGridView'et ligger i den ene klasse, så får at kunne blive kaldt fra en anden klasse, skal du ha en reference med over i den anden klasse.

class ShowMembers
{
  public void SetColumns(DataGridView dgw)
  {
    dgw.Columns["Fornavn"].Visible = false;
  }
}

Og så kalder du metoden sådan her:

ShowMembers members = new ShowMembers();
members.SetColumns(dataGridView1);
Avatar billede softspot Forsker
12. marts 2007 - 08:20 #5
ircnoob >> Det kommer da an på hvordan din klasse bliver oprettet...
Avatar billede softspot Forsker
12. marts 2007 - 08:21 #6
...der er jo ikke noget af det kode du har vist der fortæller noget om den historie.
Avatar billede ircnoob Nybegynder
12. marts 2007 - 12:37 #7
Hejsa hmortensen, det lyder jo meget rigtigt :)

Det virker dog desværre ikke lige udmiddelbart.. "Error    1    The name 'dataGridView1' does not exist in the current context" .. ved ikke lige.. :/
Avatar billede hmortensen Nybegynder
12. marts 2007 - 16:00 #8
Det her skal du kalde i den klasse som har dataGridView1 (formodentlig din form):
ShowMembers members = new ShowMembers();
members.SetColumns(dataGridView1);


Ellers må du paste din kode herind, så skal jeg kigge på det.
Avatar billede ircnoob Nybegynder
12. marts 2007 - 17:12 #9
øh, det forstår jeg ikke ?

den showmembers er der datagridet er placeret ..

Og jeg har så derudover en anden form, hvor jeg skal kunne sætte indstillinger, fx hvilke columns der skal vises :)

så hvor skal hvilket placeres :) ?
Avatar billede ircnoob Nybegynder
12. marts 2007 - 17:15 #10
så når jeg klikker på en butten i klassen indstillinger, skal der i vismedlemmer ændres i hvilke coloums den skal vise i datagridet.. håber jeg er nogenlunde forståelig efterhpnden.. :)
Avatar billede hmortensen Nybegynder
12. marts 2007 - 18:49 #11
Åbner du indstillings formen fra vismedlemmer formen?
Avatar billede ircnoob Nybegynder
12. marts 2007 - 18:58 #12
nej.. ville det hjælpe :) ?
Avatar billede hmortensen Nybegynder
12. marts 2007 - 21:43 #13
Jeg prøver blot at finde ud af hvordan du skal få referencen mellem de to forms.
Avatar billede ircnoob Nybegynder
13. marts 2007 - 07:58 #14
oki.. kunne jo måske godt ændre det hvis det hjalp til at gøre det nemmere..
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester