2015-05-14 2 views
0

В моей форме У меня есть кнопка, и я хочу, чтобы добавить пользовательский элемент управления на панели каждый раз, когда он щелкнул:Добавление UserControl dynammiclly к панели на ButtonClick

public partial class AddInstanceForm : MetroForm 
{   
     private List<Material> material { get; set; } 
     public AddInstanceForm() 
     { 
      InitializeComponent(); 
     } 

     // get data from db for mycombobox which exit in MaterilControl 
     private void AddInstanceForm_Load(object sender, EventArgs e) 
     { 
      using(DBContext db=new DBContext()) 
      { 
       material = db.Materials.ToList(); 
      } 
     } 

     // This Attached to button click 
     private void anotherMaterial_Click(object sender, EventArgs e) 
     {   
      MaterialControl mc = new MaterialControl(material); 
      this.SuspendLayout(); 

      panel1.Controls.Add(mc);  

      //EDIT 
      this.Invalidate(); 
      this.Update(); 

      this.ResumeLayout(false); 
     } 
} 

Проблема в том, что только один пользовательский элемент управления является добавлены к панели, независимо от того, сколько раз кнопка не нажата:

public partial class MaterialControl : UserControl 
{ 
     private MaterialView _material; 
     private List<Material> MaterialboData { get; set; } 
     public MaterialView Material 
     { 
      get 
      { 
       _material.Name=MaterialName.Text; 
       _material.Quntity = MaterialQu.Text; 
       _material.MaterialID = Convert.ToInt32(MaterialName.ValueMember); 
       return _material; 
      } 
      set 
      { 
       MaterialName.Text=value.Name; 
       MaterialQu.Text = value.Quntity; 
       MaterialName.ValueMember = Convert.ToString(_material.MaterialID); 
      } 
     } 

     public MaterialControl(List<Material> Data) 
     { 
      _material = new MaterialView(); 
      this.MaterialboData = new List<Material>(); 
      this.MaterialboData = Data; 
      InitializeComponent(); 
     } 
} 
+0

Попробуйте вызвать Invalidate() после рисования элемента управления. – Oscar

+0

все еще не работает –

ответ

0

вместо того чтобы добавлять их с новой верхней позиции, если у вас есть панель, посвященный только для этих элементов управления можно использовать Dock Top вместо и это позволит панели автоматически компоновать элементы управления для вас.

+0

Я пробовал это, но это не решило y probem –

+0

Я попытался сделать недействительным + док-топ не работал –

+0

Переместить недействительный и обновить за пределами резюме. – mageos

Смежные вопросы