Hur når jag en funktion ifrån en annan klass i C#?

Permalänk
Medlem

Hur når jag en funktion ifrån en annan klass i C#?

Jag har en funktion i klassen Form1 där main finns och klassen skriver ut text i en textbox. Jag försöker att nå funktionen ifrån en annan klass men kan inte se den, om jag sätter funktionen till static så når jag den men då fungerar det inte att nå textboxen eftersom den inte är statisk. Hur ska jag lösa detta på ett enkelt sätt?

Permalänk

Form1 myForm = new Form1(); myForm.myFunction();

Så menar du?

Visa signatur
Permalänk
Medlem

den måste vara public för att synas utifrån.

Visa signatur

Core i7 7700K | Titan X (Pascal) | MSI 270I Gaming Pro Carbon | 32 GiB Corsair Vengeance LPX @3000MHz | Samsung 960 EVO 1TB

Permalänk

Så här når du en funktion från en annan klass:
Klass.funktion(EnAnnanKlass.funktion());

Alternativt om klasserna tillhör olika namnrymder:
Namnrymd.Klass.funktion(EnAnnanNamnrymd.EnAnnanKlass.funktion());

Permalänk
Medlem
Skrivet av Tallrot:

Jag har en funktion i klassen Form1 där main finns och klassen skriver ut text i en textbox. Jag försöker att nå funktionen ifrån en annan klass men kan inte se den, om jag sätter funktionen till static så når jag den men då fungerar det inte att nå textboxen eftersom den inte är statisk. Hur ska jag lösa detta på ett enkelt sätt?

Instansiera objektet korrekt, är den static behövs ingen instansiering.

Exempel för static:

static class Test { static string MinEgenskap {get;set;} }

Dold text

Exempel för andra:

class Test { public string MinEgenskap {get;set;} }

Dold text

Nås genom att:

Staticmetoden: Test.MinEgenskap = "Det här funkar"; publika versionen: Test T = new Test(); T.MinEgenskap = "Det här funkar";

Som @MathNinja nämner så kan du behöva ta itu med "namespace", använder du samma som din Form1 eller program.cs så är det inte ett befintligt problem.

Använder du public eller annan tillträdesmetod lär du behöva anpassa dig efter den.
Annars kommer du troligen få Inconsistent accessibility exception.

Sen använder du det såhär:

Main{ TextBox1.Text = Test.MinEgenskap; }

Dold text
Visa signatur

Citera om du vill ha svar, hjälpte jag dig, gilla svaret!
AzireVPN - Felkod40

Permalänk
Medlem
Skrivet av freddyfresh:

Staticmetoden:
Test.MinEgenskap = "Det här funkar";

publika versionen:
Test T = new Test();
T.MinEgenskap = "Det här funkar";

Fungerar väl lika bra att bara använda:
"Test.MinEgenskap = "Det här funkar";"
För att kalla på den publika funktionen med? Så brukar i alla fall jag göra

[EDIT] Var för snabb! Tänkte inte efter riktigt. Självklart måste man instansiera ett objekt innan man kan skriva så..