the incredible Leitman
Erfahrenes Mitglied
Hallo zusammen
Ich habe ein Control erstellt, dass aber nicht von WindowsControls erbt, also von Grund auf neu damit begonnen....
Nur mit dem EventHandling komme ich nicht so ganz voran....
Ich habe eine Form, die in einer for Schleife für jeden angeschlossenen Bildschirn ein TabControl added und diesem jeweils eine Anzahl TabPages gibt...
Klar soweit?
Jetzt soll, auf der zweiten Tab Page etwas anderes gezeichnet werden, als auf der dritten usw...
Momentan habe ich es so gelöst:
und für jede Page wird eine eigene Routinde aufgerufen:
Zur Erklärung: ctrlLeft und ctrlRigth sind arrays aus CustomControls (ZLSControlRailsBaseClass)
Diese sollen auf der Tab Page gezeichnet werden
Genau so wie es jetzt ist, funktioniert es... aber ich frage mich ob das so die ideale Lösung ist?
Hab probiert, alles in eine Methode zu packen:
aber so funktioniert es nicht... dabei werden nur auf dem letzten Bildschirm die gewünschten Controls gezeichnet....
Ich versteh nicht warum ist die zweite Lösung nicht genau wie die erste?
Hoffe ihr könnt mir weiterhelfen,
was mache ich falsch, oder habe ich was vergessen?
Ich habe ein Control erstellt, dass aber nicht von WindowsControls erbt, also von Grund auf neu damit begonnen....
Nur mit dem EventHandling komme ich nicht so ganz voran....
Ich habe eine Form, die in einer for Schleife für jeden angeschlossenen Bildschirn ein TabControl added und diesem jeweils eine Anzahl TabPages gibt...
Klar soweit?
Jetzt soll, auf der zweiten Tab Page etwas anderes gezeichnet werden, als auf der dritten usw...
Momentan habe ich es so gelöst:
C++:
if (idx_tabPages == 1) // second TabPage
{
// create Controls /*Strecke, 1.Teil*/ with information from Server
this->m_tabPages[idx_tabPages]->Paint += gcnew System::Windows::Forms::PaintEventHandler(this, &ZLSClientApplication::tabPage_2_Paint);
}
if (idx_tabPages == 2) // third TabPage
{
// create Controls /*Strecke, 2.Teil*/ with information from Server
this->m_tabPages[idx_tabPages]->Paint += gcnew System::Windows::Forms::PaintEventHandler(this, &ZLSClientApplication::tabPage_3_Paint);
}
C++:
void ZLSClient::ZLSClientApplication::tabPage_2_Paint (System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e)
{
Graphics ^ g = e->Graphics;
for each (ZLSControlRailsBaseClass ^rail in ctrlLeft)
{
rail->Paint(g);
}
}
void ZLSClient::ZLSClientApplication::tabPage_3_Paint (System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e)
{
Graphics ^ g = e->Graphics;
for each (ZLSControlRailsBaseClass ^rail in ctrlRight)
{
rail->Paint(g);
}
}
Diese sollen auf der Tab Page gezeichnet werden
Genau so wie es jetzt ist, funktioniert es... aber ich frage mich ob das so die ideale Lösung ist?
Hab probiert, alles in eine Methode zu packen:
C++:
this->m_tabPages[idx_tabPages]->Paint += gcnew System::Windows::Forms::PaintEventHandler(this, &ZLSClientApplication::tabPage_i_Paint);
void ZLSClient::ZLSClientApplication::tabPage_i_Paint (System::Object^ sender, System::Windows::Forms::PaintEventArgs^ e)
{
Graphics ^ g = e->Graphics;
System::Windows::Forms::TabPage ^page = (System::Windows::Forms::TabPage ^ )sender;
if (page == m_tabPages[2])
{
for each (ZLSControlRailsBaseClass ^rail in ctrlLeft)
{
rail->Paint(g);
}
}
if (page == m_tabPages[3])
{
for each (ZLSControlRailsBaseClass ^rail in ctrlRight)
{
rail->Paint(g);
}
}
}
Ich versteh nicht warum ist die zweite Lösung nicht genau wie die erste?
Hoffe ihr könnt mir weiterhelfen,
was mache ich falsch, oder habe ich was vergessen?