В моей форме У меня есть кнопка, и я хочу, чтобы добавить пользовательский элемент управления на панели каждый раз, когда он щелкнул:Добавление 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();
}
}
Попробуйте вызвать Invalidate() после рисования элемента управления. – Oscar
все еще не работает –