Drucken des aktiven Panels einer Multipanel-Oberfläche

CruzWoman

Grünschnabel
Hallo,

ich habe leider durch googeln keine Antwort gefunden.

In meiner Windows Forms Anwendung habe ich mehrere Panels übereinander und nun möchte ich das oberste Panel jeweils drucken. Momentan frage ich das aktuelle Panel über den gewählten Knoten der TreeView ab.

Folgendes habe ich:

private: System::Void printDocument1_PrintPage(System::Object^ sender, System::Drawing::printing::printPageEventArgs^ e) {
if (treeViewE->Node->Name == "Knotenname") { //treeViewE ist mein gewählter Knoten, der dann - nach anklicken - das entsprechende Panel auf Show() setzt
Bitmap^ b = gcnew Bitmap(flowLayoutPanelKnotenname->Width, flowLayoutPanelKnotenname->Height);
flowLayoutPanelKnotenname->DrawToBitmap(b, f->PageBounds);
f->Graphics->DrawImage(b, Point(15, 50));
}
}
private: System::Void druckenToolStripMenuItem_Click(System::Object^ sender, System::EventArgs^ e) {
printDocument1->Print();
}

Gibt es eine schönere Möglichkeit direkt auf das oberste Panel zuzugreifen, also immer das, das gerade per ->Show() angezeigt wird (alle anderen setze ich auf ->Hide() ) ohne die ganzen if-Abfragen (habe einige Panels übereinander...)?

Vielen Dank schon einmal für die Antwort.
Viele Grüße
 
Wenn du (zusätzlich zur Show-Methode) noch die BringToFront-Methode verwendest, dann ist das angezeigte Control immer ganz oben und hat damit in der Controls-Auflistung den Index 0:
Code:
 Dim OberstesControl As Control = ParentControl.Controls.Item(0)
 
Hallo,

vielen Dank für die Antwort. Leider kam ich nicht früher dazu, es auszuprobieren. Klappt prima.

Viele Grüße
 
Zurück