Toon posts:

[C#] Functie in een form (class)

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hey,

Heb hier op het forum gezocht en ook op google, maar niks kunnen vinden..

Ik heb dus 2 forms, frmMain en frmSec voor het gemak. Nu heb ik in frmSec (wat een class is) een

code:
1
public void functie() { }


gemaakt. In frmSec kan ik deze nu aanroepen dmv this.functie();

Maar als ik nu in frmMain een nieuwe form dmv van dit maak:

code:
1
2
3
4
Form frmSec = new frmSec();
frmSec.Show();

frmSec.functie(); //Dit gaat dan niet


Ik krijg dan de volgende error:

Error 1 'System.Windows.Forms.Form' does not contain a definition for 'functie' frmMain.cs

Het lijkt me namelijk wel correct ? Kbegin net met C#.. dus het zal wel aan mij liggen.. :X

edit: ja.. chatmessage was de eigenlijk funcite.. maar ff veranderd voor het gemak..

[ Voor 9% gewijzigd door Verwijderd op 26-12-2005 19:32 ]


  • --MeAngry--
  • Registratie: September 2002
  • Laatst online: 19-04 20:26

--MeAngry--

aka Qonstrukt

Ik neem aan dat chatMessage de functie is in dit geval? :P
Waar heb je de functie in frmSec ergens gedeclareerd, want het lijkt erop dat deze gewoon niet op de goede plek staat. :)

Tesla Model Y RWD (2024)


  • TheBlasphemer
  • Registratie: September 2004
  • Laatst online: 13-11-2025
Issie misschien private of protected?
Nooit aan C# gedaan, maar in C++ ed is alles public, private, of protected:
public is door iedereen aan te roepen
protected alleen door "friend" classes
en private alleen vanuit zichzelf, dacht ik...

[img=http://www.web2messenger.com/smallstatus/w2m/theblasp.png]


  • SlowMeDown
  • Registratie: Mei 2003
  • Laatst online: 15-04 08:14
Je definieert de variabele frmSec van het type Form. Het System.Windows.Forms.Form type kent de bewuste functie niet die jij probeert aan te roepen, omdat deze functie op het type frmSec is gedefinieert en niet op het type System.Windows.Forms.Form.

De oplossing is om het type van de frmSec variabele te veranderen naar het frmSec type en alles is ok.
C#:
1
2
3
4
frmSec frmSec = new frmSec();
frmSec.Show();

frmSec.functie(); 

Type namen beginnen overigens doorgaans met een hoofdletter, dus het type frmSec wordt FrmSec. De code zou dan
C#:
1
2
3
4
FrmSec frmSec = new FrmSec();
frmSec.Show();

frmSec.functie(); 

worden. Dit is toch een stuk leesbaarder?

[ Voor 34% gewijzigd door SlowMeDown op 26-12-2005 19:31 ]


Verwijderd

Topicstarter
aaaah.. ksnap em :D

Thanks !! _/-\o_ _/-\o_ _/-\o_

EDIT:
SlowMeDown schreef op maandag 26 december 2005 @ 19:29:
Type namen beginnen overigens doorgaans met een hoofdletter, dus het type frmSec wordt FrmSec. De code zou dan
C#:
1
2
3
4
FrmSec frmSec = new FrmSec();
frmSec.Show();

frmSec.functie(); 

worden. Dit is toch een stuk leesbaarder?
Ben ik met je eens over hoofdletter, alleen 1 probleem.. als ik FrmSec ervoor zet, werkt het eenvoudig niet :S

Error 1 The type or namespace name 'frmSec' could not be found (are you missing a using directive or an assembly reference?)

Zonder hoofdletter, want zo is het in mijn projectje nu.. zal het strax veranderen.. Ze zitten in dezelfde namespace etc..

[ Voor 92% gewijzigd door Verwijderd op 26-12-2005 19:37 ]


  • --MeAngry--
  • Registratie: September 2002
  • Laatst online: 19-04 20:26

--MeAngry--

aka Qonstrukt

Je moet de hoofdletter natuurlijk dan wel overal toepassen he ;) Dus je class FrmSec noemen, de constructor ook niet vergeten. :)

Tesla Model Y RWD (2024)


Verwijderd

Topicstarter
Huh.. raar.. laat maar.. nog een keer gedaan en nu doet hij het wel...

Nogmaals bedankt !! _/-\o_ _/-\o_ _/-\o_
Pagina: 1