none
DrawString() im Konstruktor ineffektiv RRS feed

  • Frage

  • Hallo Leute,

    folgender Code soll , ohne PainEventArgs e zu verwenden, außerhalb einer PictureBox einen String auf ein WinForms-Formular zeichnen. Tut er aber nicht. Zumindest nicht dann, wenn die Methode im Konstruktor aufgerufen wird. Erst, wenn ich den Mauszeiger pushe, wird der String gezeichnet. Woran könnte das liegen?

    using System.Drawing;
    using System.Windows.Forms;
    
    namespace WindowsFormsApp2 {
        public partial class Form1 : Form {
            public Form1() {
                InitializeComponent();
                this.DrawString(); //erwirkt nix! Warum?
            }
            private void DrawString() {
                Graphics formGraphics = this.CreateGraphics();
                string drawString = "Demo Text 2Be Shown on screen";
                Font drawFont = new Font("Arial", 22);
                SolidBrush drawBrush = new SolidBrush(Color.Red);
                float x = 270.0F;
                float y = 150.0F;
                formGraphics.DrawString(drawString, drawFont, drawBrush, x, y);
                drawFont.Dispose();
                drawBrush.Dispose();
                formGraphics.Dispose();
            }
    
            private void Form1_MouseDown(object sender, MouseEventArgs e) {
                lblX.Text = MousePosition.ToString();
                lblX.Text = "X:" + e.X + " Y:" + e.Y;
                this.DrawString(); //String wird gezeichnet
            }
        }
    }






    • Bearbeitet tklustig Sonntag, 30. Juni 2019 11:48
    Sonntag, 30. Juni 2019 11:46

Antworten

  • Hi Thomas,
    zum Zeitpunkt der Instanziierung (New -> Konstruktor) befindet sich das "neue Objekt Form" noch nicht in der Anzeige. Angezeigt wird es erst, wenn es der Liste der anzuzeigenden Steuerelemente hinzugefügt wird. Und das wird erst gemacht, wenn es das Objekt gibt (nach der Instanziierung). Du musst Dir also für diese Arbeit ein Ereignis aussuchen, was "ausreichend spät" ausgelöst wird, z.B. FormLoaded.

    --
    Best Regards / Viele Grüße
    Peter Fleischer (former MVP for Developer Technologies)
    Homepage, Tipps, Tricks

    • Als Antwort vorgeschlagen Christoph Biegner Montag, 1. Juli 2019 09:59
    • Als Antwort markiert tklustig Freitag, 5. Juli 2019 23:02
    Sonntag, 30. Juni 2019 15:35