Я не понимаю, как будет выглядеть графический интерфейс. Снимок экрана поможет нам лучше. Не уверен, что щелчок на панели является идеальным способом позволить пользователям что-то открыть. У панелей Надежды есть границы.
Предположим, что каждая панель имеет свой объект категории, помеченный им.
private void button1_Click(object sender, EventArgs e)
{
List<Category> lstCategory = Manager.GetCategories();
int i = 5, j = 5;
foreach (Category cat in lstCategory)
{
Label label = new Label();
label.Text = cat.Name;
Panel panel = new Panel();
panel.Tag = cat;
panel.Controls.Add(label);
//if you already have panel created for categories, then start from here..
panel.Click += ((s, r) =>
{
List<Product> lstProduct = Manager.GetProducts((Category)panel.Tag);
int x = 5, y = 5;
foreach (Product product in lstProduct)
{
var pnl = new Panel();
pnl.BorderStyle = BorderStyle.Fixed3D;
pnl.Size = new Size(15, 15);
pnl.Location = new Point(20 + x, 20 + y); //position it properly.
this.Controls.Add(pnl);
pnl.Tag = product;
Label lbl = new Label();
lbl.Text = product.Name;
pnl.Controls.Add(lbl);
pnl.Click += ((p, q) =>
{
dataGridView1.Rows.Add(//according to pnl.Tag values
});
}
});
panel.BorderStyle = BorderStyle.FixedSingle;
panel.Size = new Size(15, 15);
panel.Location = new Point(20 + i, 20 + j); //position it properly.
this.Controls.Add(panel);
}
}
Вы можете реорганизовать коды, которые создают панели, одним способом, передавая необходимые вещи в качестве параметров, если хотите.
Какую часть сценария вам нужна? Просто добавление в сетку? Кроме того, как вы загружаете свои данные в DataGridView? Вы обязательны? –
Да, я привязываю ... Часть, где я нажимаю панель категорий и где должны отображаться продукты для этой категории. –
Что вы планируете отображать на панели «Продукты»? Может ли это быть списком или сеткой? –