C# WinForms - Controls schieten omhoog na een compile

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Heren,

Ik zit hier nu met een vaag probleem en vroeg mij af of iemand het kende en / of een echte oplossing heeft voor dit probleem.

Het zit namelijk zo:
Ik heb een aantal WinForms met een hoop controls, nu is het probleem dat één van deze forms na elke compile de knoppen die onder aan de form zitten omhoog schieten.

Het probleem zit heb ik terug kunnen brengen naar de designer, want als je
C#:
1
this.SuspendLayout();
en
C#:
1
this.ResumeLayout(false);
weghaalt of weg comment dan is het probleem weg voor één compilatie.
Echter doe je een rebuild en de designer dus het bestand opnieuw schrijft is het probleem weer terug! 8)7

Ik heb wat gegoogled en kom het probleem wel vaker tegen en stamt al uit de 2005 studio designer, maar zo ver ik lees is er geen echte oplossing voor dit probleem?

Iemand misschien die hier zijn / haar mening / expertise kan geven voor dit probleem?

alvast heel erg bedankt.

Acties:
  • 0 Henk 'm!

  • Moi_in_actie
  • Registratie: Maart 2007
  • Laatst online: 20:42
Misschien is dit totaal niet relevant, maar heb je al eens gekeken of de controls een bepaalde instelling hebben bij de properties Anchor of Dock? Gezien de beschrijving die je geeft denk ik niet dat dit het is, maar you never know.

Ryzen 9 9950X3D ~~ 32GB GSkill TridentZ 6000Mhz ~~ ASRock B850M Steel Legend ~~ Powercolor Hellhound RX9070XT


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Zijn 't "out of the box" controls, 3rd party controls of misschien zelfs eigen controls?

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Het zijn de standaard visual studio controls (buttons), de buttons links onder zijn anchored op bottom | left en de rechter buttons zijn bottom | right anchored, verder geen docking toegepast.

Het stomme is dan ook wanneer ik dus in de designer resource bestanden Suspend en PerformLayout weg haal, compileer en dan start is het goed en alles werkt naar behoren.

Doe je daarna nogmaals een compile en word het resource bestand opnieuw geschreven dan krijg je het probleem weer terug omdat Suspend en PerformLayout opnieuw worden toegevoegd.

EDIT:

Hier heb ik een artikel gevonden dat het probleem precies beschrijft.

Misschien overstappen naar WPF dan? :S

[ Voor 15% gewijzigd door Verwijderd op 21-03-2012 12:11 ]


Acties:
  • 0 Henk 'm!

  • BertS
  • Registratie: September 2004
  • Laatst online: 14-04 17:14
Het artikel schrijft over inheritance, gebruik jij ook form-inheritance dan?
Overstappen naar WPF lijkt mij in eerste instantie wat rigoureus...

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Nee ik neem niks over van de voorgaande form, maar het probleem wat ontstaat is wel identiek.

Acties:
  • 0 Henk 'm!

  • BertS
  • Registratie: September 2004
  • Laatst online: 14-04 17:14
Misschien het form eens opnieuw opbouwen, eventueel stukje voor stukje? Code kun je overnemen uit die initialize van de andere, dan hoef je niet alle properties in te stellen.
Ik ontwikkel al jaren Winforms, maar heb dit nog nooit gezien/gehad.

Acties:
  • 0 Henk 'm!

  • NickThissen
  • Registratie: November 2007
  • Laatst online: 09-09 10:50
Typisch probleem wat ik met het overerven van een base form vaak heb. Ik heb bijvoorbeeld vaak een base form voor een dialoog scherm met een OK en Cancel knop (zoals VB dat in een template heeft zitten), en een form wat hier van overerft laat die knoppen (die rechtsonder geanchored zitten) steeds schuiven.

Mijn oplossing was om (in de base form) de knoppen in een panel te zetten, die bottom gedocked is (docking werkt wel prima), waarna ik de buttons zelf gewoon top anchor, waarna het probleem weg is.

Weet je zeker dat je geen forms overerft, als dit exact je probleem is zou dat toch het eerste zijn wat ik vermoed...

Mijn iRacing profiel


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb het nog nagekeken maar het enige wat ik overerf is de base Form zelf, dus:
C#:
1
2
3
4
public partial class SecondForm : Form
{
    // De rest van de code.
}

en niet
C#:
1
2
3
4
public partial class SecondForm : FirstForm
{
    // De rest van de code.
}


Verder kan ik geen enkele verdere vorm van overerving ontdekken. :(

Acties:
  • 0 Henk 'm!

  • NickThissen
  • Registratie: November 2007
  • Laatst online: 09-09 10:50
Kun je mijn workaround niet toch gebruiken? Als ik het goed begrijp hebben de buttons die dit probleem vertonen allemaal Anchor op Bottom staan (links of rechts is niet zo van belang denk ik). Als je ze nu eens in een Panel zet, die Dock op Bottom heeft, dan kun je de Anchor property van de buttons weer gewoon op Top zetten (ze blijven dus een vaste afstand van de bovenkant van je Panel zitten, en je Panel zal vanzelf mee naar beneden schuiven als je form groter wordt, dus netto hou je het juiste effect over).

Mijn iRacing profiel


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Dat word waarschijnlijk de oplossing die ik ga gebruiken, stom dat ik daar zelf niet aan heb gedacht.
Maar ik ben ook nog niet zo héél erg lang bezig met C# :D

Heel erg bedankt voor de suggestie! _/-\o_

[ Voor 12% gewijzigd door Verwijderd op 22-03-2012 11:00 ]

Pagina: 1