Forcierte Updates für den Forms-Designer

Es kann vorkommen, dass während der Arbeit im Windows-Forms-Designer an einem Control so etwas ändert, dass es der Designer nicht mitbekommt. Dies ist speziell dann der Fall, wenn man wie in einem früheren Blog-Eintrag hier beschrieben quasi „hinterrücks“ Eigenschaften eines Controls ändert, ohne dass der Designer direkt beteiligt ist, nämlich via Code beim Control selbst.

Konkret hatte ich das Problem, dass ich den Text eines Label-Controls änderte, aber die Markierung rund um das Control nicht an die neue visuelle Länge angepasst wurde.

Es hat sich zum Glück herausgestellt, dass es relativ einfach ist, an die Komponente des Designers heranzukommen, welche für Reaktionen auf solche Änderungen zuständig ist. Konkret in Code:

 protected override void OnMouseClick(MouseEventArgs e) {
   base.OnMouseClick(e);
   if (DesignMode) {
     // gewünschte DesignTime-Verarbeitung 
     IComponentChangeService changeService = (IComponentChangeService)Site.GetService(typeof(IComponentChangeService));
     if (changeService != null) {
       changeService.OnComponentChanged(this, null, "", "");
     }
   }
 }
Veröffentlicht in Keine Kategorie. Schlagwörter: , , . Leave a Comment »

Schreibe einen Kommentar

Trage deine Daten unten ein oder klicke ein Icon um dich einzuloggen:

WordPress.com-Logo

Du kommentierst mit Deinem WordPress.com-Konto. Abmelden / Ändern )

Twitter-Bild

Du kommentierst mit Deinem Twitter-Konto. Abmelden / Ändern )

Facebook-Foto

Du kommentierst mit Deinem Facebook-Konto. Abmelden / Ändern )

Google+ Foto

Du kommentierst mit Deinem Google+-Konto. Abmelden / Ändern )

Verbinde mit %s

%d Bloggern gefällt das: