Domanda

Sto cercando di chiamare Panel1 Metodo di vernice per ridire il pannello con una linea arancione (viene avviata con una linea blu).

Ho provato invalidato (), aggiornare () e aggiornare (), ma nulla sembra chiamare l'evento della vernice di panel1 ...

Il gestore di eventi vernice è stato aggiunto al Panel1:

this.panel1.Paint += new System.Windows.Forms.PaintEventHandler(this.panel1_Paint);
.

può qualcuno per favore aiuta?

static class Program
{
    /// <summary>
    /// The main entry point for the application.
    /// </summary>
    [STAThread]
    static void Main()
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);

        Form1 testForm = new Form1();
        Application.Run(testForm);

        testForm.drawNewLine();
    }
}
.


.
public partial class Form1 : Form
{
    bool blueLine = true;
    bool orangeLine = false;

    public Form1()
    {
        InitializeComponent();
    }

    private void panel1_Paint(object sender, PaintEventArgs e)
    {
        Graphics g = e.Graphics;

        if (blueLine == true)
        {
            Pen bluePen = new Pen(Color.Blue, 3);
            g.DrawLine(bluePen, 30, 50, 30, 250);
        }
        else if (orangeLine == true)
        {
            Pen orangePen = new Pen(Color.Orange, 3);
            g.DrawLine(orangePen, 30, 50, 30, 250);
        }

        g.Dispose();
    }

    public void drawNewLine()
    {
        blueLine = false;
        orangeLine = true;
        //panel1.Invalidate();
        //panel1.Update();
        panel1.Refresh();
    }
}
.
È stato utile?

Soluzione

Application.Run(testForm); Blocks Fino a quando il modulo è chiuso, quindi quando viene chiamato drawNewLine() - il modulo non esiste più (creare un pulsante che lo chiama clicca e controlla te stesso, il codice funziona).Invalidate() dovrebbe funzionare bene.

Inoltre, non è necessario disporre dell'oggetto Graphics che viene passato al codice in Evento di vernice.Non eri responsabile della creazione, quindi lascia che il codice che lo ha creato per distruggerlo.

Inoltre, smaltire gli oggetti Pen da quando li stai creando.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top