2015-06-10 5 views
5

Ich muss eine Bildlaufleiste für eine Komponente hinzufügen, wenn ein Benutzer ihre Schriftgröße auf 125% oder 150% ändert. Dazu habe ich in der Komponente eine Methode hinzugefügt, die die AutoScroll-Eigenschaft auf true setzt.Wie kann ich die Eigenschaften eines Controls ändern, nachdem die Ressourcendatei angewendet wurde?

protected override void OnSizeChanged(EventArgs e) 
{ 
    if (SystemFonts.DefaultFont.Size < 8) 
    { 
     this.AutoScroll = true; 
    } 
    if (this.Handle != null) 
    { 
     this.BeginInvoke((MethodInvoker) delegate 
     { 
      base.OnSizeChanged(e); 
     }); 
    } 
} 

Das funktioniert gut, aber eine der Komponenten sollte keine Bildlaufleiste erhalten.

Das obige Verfahren wird ausgelöst, wenn die Controller wie folgt zu initialisieren:

this.ultraExpandableGroupBoxPanel1.Controls.Add(this.pnlViewMode); 
this.ultraExpandableGroupBoxPanel1.Controls.Add(this.ucASNSearchCriteria); 
resources.ApplyResources(this.ultraExpandableGroupBoxPanel1, "ultraExpandableGroupBoxPanel1"); 
this.ultraExpandableGroupBoxPanel1.Name = "ultraExpandableGroupBoxPanel1"; 

Verfahren ausgelöst werden, wenn sie in Kontrollen und nach dieser Zugabe wird die Ressource angewendet werden. Die Komponente, die ich nicht ändern möchte, gehört zu in obigem Code.

Jetzt möchte ich die AutoScroll Eigenschaft von 'UCASNSearchCriteria' auf falsch setzen, nachdem die Ressource angewendet wurde. Ich habe wenig Wissen über den Renderprozess von C# ui-Steuerelementen. Ist es möglich, Eigenschaften nach dem Anwenden dynamisch zu ändern?

+0

Kannst du nicht einfach tun ucASNSearchCriteria.AutoScroll = false; – David

+0

Sie müssen nicht jedes Mal "dieses" jedes Mal setzen. – David

Antwort

2

Ich würde eine abgeleitete Kontrolle des gewünschten Typs erstellen und eine Eigenschaft oder etwas ähnliches mit dem Standardwert true hinzufügen.

Damit können Sie diese Eigenschaft im WinForms-Designer einfach ändern und auf diese Eigenschaft reagieren, wenn die Größe geändert wird.

So ist der Designer wird diese Codezeile für Sie hinzufügen, wenn Sie es ändern Nicht-Standard-sein (false):

this.ucASNSearchCriteria.AllowAutoScroll = false; 

... und Sie können wie folgt auf diese neue Eigenschaft reagieren:

protected override void OnSizeChanged(EventArgs e) 
{ 
    if (AllowAutoScroll) 
    { 
     if (SystemFonts.DefaultFont.Size < 8) 
     { 
      this.AutoScroll = true; 
     } 
     if (this.Handle != null) 
     { 
      this.BeginInvoke((MethodInvoker) delegate 
      { 
       base.OnSizeChanged(e); 
      }); 
     } 
    } 
} 
+0

Entschuldigung, dass sich kürzlich nicht eingeloggt hat, vielen Dank für Ihre Hilfe! –

Verwandte Themen