[C#] Backgroundimage en Controls.clear()

Pagina: 1
Acties:

  • xzaz
  • Registratie: Augustus 2005
  • Laatst online: 18-09 10:54
Goedenavond,

Ik heb een probleem met Backgroundimage en Controls.clear() waar ik niet goed uitkom. Ik heb dynamische achtergronden die ik laad via deze code:
C#:
1
this.BackgroundImage = (Image)Properties.images.ResourceManager.GetObject(achtergronden[x].ToString());


Daarna maak ik mijn buttons mooi aan maar moet ik ze ook weer verwijderen. Dit doe ik door
C#:
1
Panel.Controls.Clear();

Nu gaat het aanmaken van de buttons zonder problemen maar het verwijderen gaat ook voor de gebruiker stapsgewijs. Je ziet dus elke button verwijderd worden 1 voor 1. Wanneer ik mijn Background uitschakel werkt hij perfect. De achtergronden zijn allemaal van 18-25k wat dus geen probleem moet zijn voor de preformance.

SuspendLayout() en ResumeLayout(); werken niet, zoveel bij Panel.Controls.Clear(); als bij handmatig alle controls zoeken en 1 voor 1 verwijderen. Daarna gezocht op SuspendLayout not working (en op vele andere). Hier vele 'oplossingen' geprobeerd zowel de oplossing van Expert Exchange maar geen resultaat.

C#:
1
this.DoubleBuffered = true;
ook geprobeerd werkt ook niet. Backgroundcolor op wit gezet helpt ook niet. Heeft er iemand nog idee?

[ Voor 0% gewijzigd door xzaz op 20-08-2009 04:27 . Reden: tags ]

Schiet tussen de palen en je scoort!


  • Wijnbo
  • Registratie: December 2002
  • Laatst online: 06-09 20:35

Wijnbo

Electronica werkt op rook.

Kun je de volledige code (of in ieder geval de relevante methode) eens posten?

  • Infinitive
  • Registratie: Maart 2001
  • Laatst online: 25-09-2023
Je hebt de BeginUpdate() en EndUpdate() ook geprobeerd?

Je zou er anders nog voor kunnen kiezen om het hele panel weg te mikken en te vervangen voor een nieuwe.

putStr $ map (x -> chr $ round $ 21/2 * x^3 - 92 * x^2 + 503/2 * x - 105) [1..4]


  • xzaz
  • Registratie: Augustus 2005
  • Laatst online: 18-09 10:54
Wijnbo schreef op donderdag 20 augustus 2009 @ 08:51:
Kun je de volledige code (of in ieder geval de relevante methode) eens posten?
Welke code wil je? Er is verder geen relevante code.

Aanmaken achtergrond:
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public frmMain()
        {
            this.DoubleBuffered = true;

            List<string> achtergronden = new List<string>();
            achtergronden.Add("back");
            achtergronden.Add("back_blauw");
            achtergronden.Add("back_geel");
            achtergronden.Add("back_lblauw");
            achtergronden.Add("back_lbruin");
            achtergronden.Add("back_paars");
            achtergronden.Add("back_rood");

            Random RandomNumber = new Random();
            int x = RandomNumber.Next(0, 6);
//Zo werkt het dus langzaam
            this.BackgroundImage = (Image)Properties.images.ResourceManager.GetObject(achtergronden[x].ToString());

//Zo werkt het snel, gewoon geen achtergrond renderen
//this.BackgroundImage = (Image)Properties.images.ResourceManager.GetObject(achtergronden[x].ToString());
            InitializeComponent();
        }


C#:
1
2
3
4
public void _emptyPanel()
        {
            PnlLeerlingen.Controls.Clear();
        }
Infinitive schreef op donderdag 20 augustus 2009 @ 08:58:
Je hebt de BeginUpdate() en EndUpdate() ook geprobeerd?

Je zou er anders nog voor kunnen kiezen om het hele panel weg te mikken en te vervangen voor een nieuwe.
Je bedoeld op de panel? Naar mijn weten heeft die geen Begin/EndUpdate http://msdn.microsoft.com...rms.panel_properties.aspx

Verwijderen is een optie maar het zou eigenlijk zo niet moeten werken.

[ Voor 16% gewijzigd door xzaz op 20-08-2009 09:08 ]

Schiet tussen de palen en je scoort!


Verwijderd

1) je zet je form op doublebuffered ipv je panel
2) http://dotnet.org.za/piet...Update-and-EndUpdate.aspx heb je hier wat aan?

Verwijderd

LockWindowUpdate al geprobeerd ? (is geen nette, zeker niet voor vanuit .Net)

code:
1
2
3
4
5
6
7
8
[DllImport("c:\\windows\\system32\\user32.dll")]
public static extern bool LockWindowUpdate(IntPtr hWndLock)

LockWindowUpdate(this.Handle);
// doe hier wat met je form/control

LockWindowUpdate(IntPtr.Zero);
}

  • xzaz
  • Registratie: Augustus 2005
  • Laatst online: 18-09 10:54
Verwijderd schreef op donderdag 20 augustus 2009 @ 09:18:
LockWindowUpdate al geprobeerd ? (is geen nette, zeker niet voor vanuit .Net)

code:
1
2
3
4
5
6
7
8
[DllImport("c:\\windows\\system32\\user32.dll")]
public static extern bool LockWindowUpdate(IntPtr hWndLock)

LockWindowUpdate(this.Handle);
// doe hier wat met je form/control

LockWindowUpdate(IntPtr.Zero);
}
Daar had ik inderdaad nog niet naar gekeken. Niet netjes, maar ik denk op dit moment de beste oplossing. Bedankt. Het werkt overigens niet super maar er is mee te leven.

[ Voor 4% gewijzigd door xzaz op 20-08-2009 10:30 ]

Schiet tussen de palen en je scoort!

Pagina: 1