2016-04-07 19 views
2

Özel bir kapsayıcıyı UserControl olarak oluşturmaya çalışıyorum.Kapsayıcı UserControl - Eklenen Denetimleri İşleme ve Değiştirme

Hedefim: Tasarımcının içindeki denetimleri sürükleyip kullanıcı denetimlerimin kodunun içindeki gelen denetimleri ele alabilmek istiyorum.

Örnek: Kapımı bir yere yerleştirip bir düğme ekledim. Bu ana sayfada, kullanıcı kontrolümün bu düğmenin genişliğini ve konumunu otomatik olarak ayarlamasını istiyorum. Bu benim sıkıştığım nokta.

Kodum: enter image description here

MessageBox

[Designer("System.Windows.Forms.Design.ParentControlDesigner, System.Design", typeof(IDesigner))] 
public partial class ContactList : UserControl 
{ 
    public ContactList() 
    { 
     InitializeComponent(); 
    }   

    private void ContactList_ControlAdded(object sender, ControlEventArgs e) 
    { 
     e.Control.Width = 200; // Nothing happens 
     e.Control.Height = 100; // Nothing happens 

     MessageBox.Show("Test"); // Firing when adding a control 
    } 
} 

enter image description here

iyi çalışıyor. width ve height setlerinin yok sayılır.
Sorun sadece "neden?" Dir. düğmesine yerleştirerek ve düğme 200x100 yeniden boyutlandırılır alır F6 ile yeniden derlenmesine zaman ben sadece fark ettik


DÜZENLEME. Neden bu yerleştirirken çalışmıyor?

Yani ... FlowLayoutPanel, yerleştirdiğinizde ek denetimleri gerçekleştirir. İşte tam olarak aradığım davranış.

enter image description here

+1

https://msdn.microsoft.com/en-us/library/system.componentmodel.design.icomponentchangeservice%28v=vs.110%29.aspx –

+0

senin kodun temel sorunudur o kokan boyutu uygulayın. Boyutu uygulamak için, 'BeginInvoke' kullanarak boyutu ayarlamanız gerekir. –

cevap

İlgili konular