Picturebox-Problem beim Öffnen einer Form mittels ShowDialog()



  • Hallo!

    Ich habe in einer Windows::Forms::Form, die per ShowDialog() geöffnet wird eine PictureBox. Diese soll direkt nach dem Aufrufen der Form mit einem Inhalt gefüllt werden.

    Zu diesem Zweck löst das Shown-Ereignis dieser Form ("Tritt immer dann ein, wenn das Formular erstmalig angezeigt wird.") meine zeichnen()-Funktion dieser Form aus, die die Picturebox füllt.

    Das klappt auch, nur leider wird die Picturebox nach einer gefühlten Millisekunde sofort wieder "grau".

    Die zeichnen() Funktion per Button auf dieser Form auszulösen, funktioniert stattdessen problemlos und erzeugt das gewünschte Ergebnis.

    Hat jemand eine Idee, was hier passiert? Offenbar passiert, nachdem das "Shown" Ereignis eingetreten ist, nochmals irgendeine Art Initialisierung mit der Picturebox.
    Welche Möglichkeit gibt es, *nach* allen Standard-Initialisierungen eines Forms, welches per ShowDialog() geöffnet wird, eigenen Initialisierungs-Code darauf ausführen zu lassen?

    Vielen Dank für eure Hilfe und viele Grüße,
    maugli





  • Danke Dir, ich habe durch die verlinkte Seite die Lösung gefunden. Mein Fehler war offenbar (so interpretiere ich es jedenfalls), das ich nicht in das Image der Picturebox gezeichnet hatte, sondern auf die Picturebox selbst.

    So hatte ichs gemacht:

    System::Drawing::Pen^ myPen= gcnew System::Drawing::Pen(System::Drawing::Color::Black);
    Graphics^ g=pictureBox1->CreateGraphics();
    g->DrawLine(myPen, x_old, y_old, x, y);
    delete myPen;
    delete g;
    

    So ist es jetzt:

    System::Drawing::Pen^ myPen= gcnew System::Drawing::Pen(System::Drawing::Color::Black);
    if (pictureBox1->Image != nullptr) delete pictureBox1->Image;
    pictureBox1->Image=gcnew Bitmap (pictureBox1->Width, pictureBox1->Height);
    Graphics^ g=Graphics::FromImage(pictureBox1->Image);
    g->DrawLine(myPen, x_old, y_old, x, y);
    delete myPen;
    delete g;
    

    Viele Grüße!


Anmelden zum Antworten