menuestrip
-
hallo,
ich habe in einem menuestrip 2 menüpunkte und beide rufen die gleiche funktion bei dem ereignis cklick auf. jetz möchte ich in der methode jedoch wissen von welchem menuepunkt aus die cklick methode aufgerufen wurde. geht das über einen der beiden übergabeparameter in der funktion?
newToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e)
-
geht das über einen der beiden übergabeparameter in der funktion?
Ja
-
und wie?
-
Du musst die Variable auf den passenden Typ casten.
-
ja die variable erscheint nicht über sender-> oder e->
-
Da weiß man nicht so recht was man Antworten soll...
Wie soll denn Deine Variable in ein System::Object oder EventArgs kommen ?
Schau Dir in Deinem Grundlagenbuch mal die Themen:
- Variablen
- Casts
- Klassen und deren Instanzen (Objekte)
- Vererbung
an. In der MSDN kannst Du Dir mal System::Object und Eventargs ansehen, ebenso den EventHandler.
Tip: sender ist das Objekt das den Click ausgelöst hat.
-
ah also (System::Windows::Forms::ToolStripMenuItem)sender
-
Hm, Du hast schon mal in ein C++ buch geschaut ?
newToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e)
Lass mal schauen... Von welchem Typ könnte sender denn sein ?
Ahh - da steht es ja
System::Object^ sender
sender ist vom Typ System::Object^ .
-
ne das meinte ich nicht du hast ja gesagt da verstecken sich objecte dahinter die einfach von diesem geerbt haben. hab das mal edit oben.
-
die einzelnen in einer form z.b. ein System::Windows::Forms::TabPage dieses heißt openTab wird bei mir als privateVariable angezeigt kann ich da irgendwie drauf zugreifen?
-
Ah jetzt wird der Satz klarer =o)
Jup, eventuell aber safe_cast Syntax nehmen - nicht die alte C-style Syntax. (Kommt aufs gleiche raus - aber lässt sich einfacher im Code lesen).
-
nameac schrieb:
die einzelnen in einer form z.b. ein System::Windows::Forms::TabPage dieses heißt openTab wird bei mir als privateVariable angezeigt kann ich da irgendwie drauf zugreifen?
Klar, innerhalb der gleichen Klasse kein Thema,
aus sicht einer anderen per Property (und die Schlamperversion über ändern von private auf public)
-
das property muss man dann selbst schreiben?
load.openTab->Focus();
ich will das der tab in den fordergrund kommt automatisch. ich hab schon verschieden funktionen versucht hat aber noch nicht geklappt.
-
WANN soll er in den Focus erhalten ?
VON WO soll er den Focus erhalten ?
WAS ist load ?
WAS ist openTab ?Btw.: Die MSDN und Google beissen Dich nicht. Auch wird Dir nichts abbrechen, wenn Du anfängst mal Deine Probleme vernünftig zu formulieren.
-
load ist ein objekt der klasse in dem eine form definiert ist diese form enthält die variable openTab die eine tabPage darstellt und diese tabPage soll in den fordergrund.
aufgefufen wird dies aus einer anderen klasse.
-
Die letzten paar Satzzeichen und Großbuchstaben hättest du jetzt aber auch noch weglassen können. Womöglich versucht noch jemand zu verstehen, was du da schreibst.
-
load ist ein objekt der klasse in dem eine form definiert ist diese form enthält die variable openTab die eine tabPage darstellt und diese tabPage soll in den fordergrund.
aufgefufen wird dies aus einer anderen klasse.
WANN soll er in den Focus erhalten ? -> unbekannt
VON WO soll er den Focus erhalten ? -> einer anderen klasse
WAS ist load ? load ist ein objekt der klasse in dem eine form definiert ist (Wertetyp ?)
WAS ist openTab ? -> die variable openTab die eine tabPage darstelltDu musst also nur zu <unbekannt> aus der Instanz von <einer anderen klasse> auf <die variable openTab die eine tabPage darstellt> zugreifen. Idealerweise löst Du das ganze mit einem Property, da direkte Zugriffe auf Member eines Objektes unschön sind und zu Problemen führen können. (Für letzeres müsstest Du nur private durch publib ersetzen , welches vor <die variable openTab die eine tabPage darstellt> steht.)
Und schon kannst Du über das TabControl, zu dem <die variable openTab die eine tabPage darstellt> über selectetTab gewünschtest realisieren:
tabControl->SelectedTab = tabPage2;
-
ich schätz mal tabcontrol soll bei dir ein object vom typ tabcontrol sein aber opentap ist bei mir page2 und selected ist eine private funktion.
in dem eigenschaften fenster von den form elementen kann man da außer public und private auch einstellen das das ein property ist?
-
Lies doch mal was da steht (das schwarze sind die Buchstaben) und zeig mal ein klein wenig Eigeninitiative - sich so <eigenzensur> anzustellen grenzt schon an unmgölichkeit.
-
kann man die propertys im eigenschaftsfenster einstellen?
-
Aus der FAQ:
http://www.c-plusplus.net/forum/viewtopic-var-t-is-166093.html
Du kannst auch mal die Suchfunktion benutzen. Mich erschlägt da der Beitrag: "Zugriff auf private Member.Wie mach ich das am besten?"
Mal ein (korregiertes) Beispiel aus dem Beitrag:
public: static property String^ pTextBoxText { String^ get() { return this->textBox3->Text; }; void set(String ^ newText) { this->textBox3->Text = newText; }; };
In der MSDN ist unter dem Stichwort property (z.B. per F1 wenn man es im Code stehen hat) auch was zu finden:
http://msdn2.microsoft.com/en-us/library//es7h5kch.aspx
Die Arten der Antworten werden Dir nicht gefallen, aber wenn Du ernsthaft bei C++ bleiben willst musst Du lernen nach Informationen zu suchen und nicht für jedes kleinstproblem eine Lösung im Forum erfragen (und Dir dann nicht mal gedanken darum zu machen). C++ is keine C&P Sprache.