Avatar billede majbom Novice
05. august 2006 - 10:32 Der er 8 kommentarer og
1 løsning

picturebox bliver tom ved minimering-maksimering

hej experter :)

jeg har lavet noget simpelt søjlediagram i en picturebox, som bliver tegnet, men hvis jeg minimerer - maksimerer vinduet bliver pictureboxen tom, det samme sker, hvis jeg markerer et andet vindue (så det kommer i front) for derefter at vælge mit program igen...

er det meget normalt eller?

på forhånd tak
Avatar billede innercitydk Nybegynder
05. august 2006 - 11:31 #1
Jeg går ud fra at du har en slags render metode der opdaterer søjlediagrammet i pictureboxen..

Du skal have fat i den event der sker når skærmbilledet ændres og der tvinge pictureboxen til at render. Der er nogle forskellige events der sker, her er en af dem som eksempel:

Tilføj følgende kode under formens initializecomponent metode:

this.ClientSizeChanged += new System.EventHandler(this.Form1_ClientSizeChanged);

Indsæt derefter følgende kode i Form1 klassen:

private void admin_ClientSizeChanged(object sender, EventArgs e)
{
    //Her skal du tvinge din picturebox til at reloade f.eks med kald til en render/update metode
}

Vh
Avatar billede innercitydk Nybegynder
05. august 2006 - 11:38 #2
F.eks kan du bare kalde pictureboxens invalidate metode, hvilket tvinger den til at reloade:

private void admin_ClientSizeChanged(object sender, EventArgs e)
{
    this.pictureBox1.Invalidate();
}

Af andre events der kan være relevante kan nævnes:

//Enter sker når formen aktiveres eller fokus gives videre til formen
this.Enter += new System.EventHandler(this.Form1_Enter);

private void Form1_Enter(object sender, EventArgs e)
{
    this.pictureBox1.Invalidate();
}

//Resize sker når formen skifter størrelse
this.Resize += new System.EventHandler(this.Form1_Resize);

private void admin_Resize(object sender, EventArgs e)
{
    this.pictureBox1.Invalidate();
}

Håber det hjælper dig videre.

Vh
Avatar billede innercitydk Nybegynder
05. august 2006 - 11:42 #3
private void admin_ClientSizeChanged og private void admin_Resize skulle have været:

Form1_ClientSizeChanged og Form1_Resize

Så eksemplerne er således:

this.ClientSizeChanged += new System.EventHandler(this.Form1_ClientSizeChanged);
private void Form1_ClientSizeChanged(object sender, EventArgs e)
{
    this.pictureBox1.Invalidate();
}

this.Enter += new System.EventHandler(this.Form1_Enter);
private void Form1_Enter(object sender, EventArgs e)
{
    this.pictureBox1.Invalidate();
}

this.Resize += new System.EventHandler(this.Form1_Resize);
private void Form1_Resize(object sender, EventArgs e)
{
    this.pictureBox1.Invalidate();
}
Avatar billede innercitydk Nybegynder
11. august 2006 - 17:10 #4
Kom du videre?!
Avatar billede majbom Novice
11. august 2006 - 20:40 #5
arh, jeg har helt glemt det, jeg har rodet med noget sockets der drillede og har slet ikke fået kigget på det...

men jeg skal vel bare køre den metode der tegner hvad der nu skal være i den boks, når formen får focus igen?
Avatar billede innercitydk Nybegynder
12. august 2006 - 20:13 #6
ja
Avatar billede majbom Novice
12. august 2006 - 23:32 #7
nå nu har jeg rodet lidt med det, jeg kan kun få ClientSizeChanged og Resize til at virke, og umiddelbart har de samme funktion...

Enter vil ikke virke...
Avatar billede majbom Novice
16. august 2006 - 10:35 #8
slet ikke nogen der har en løsning?
Avatar billede majbom Novice
17. august 2006 - 17:14 #9
nå...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester