В принципе простые элементы добавления мне известны. Типа:
private void Form1_Load(object sender, EventArgs e)
{
TextBox myText = new TextBox();
myText.Location = new Point(25, 25);
this.Controls.Add(myText);
}
Но как быть с автоматическим добавлением элементов. Вот у меня есть такой код: Где я вручную добавил 18 элементов (Picture Box, и Label) поскольку это соответствует количеству спарсенных элементов списка.
И в цикле уже присваивал им значения.
public void MainCol()
{
#region Boxes
PictureBox[] boxes = {
pictureBox1, pictureBox2, pictureBox3, pictureBox4, pictureBox5, pictureBox6, pictureBox7, pictureBox8,
pictureBox9, pictureBox10, pictureBox11, pictureBox12, pictureBox13, pictureBox14, pictureBox15, pictureBox16, pictureBox17, pictureBox18};
Label[] labels = {
label1, label2, label3, label4, label5, label6, label7, label8, label9, label10, label11, label12, label13, label14, label15,
label16, label17, label18};
Label[] qal = {
qual1, qual2, qual3, qual4, qual5, qual6, qual7, qual8, qual9, qual10, qual11, qual12, qual13, qual14, qual15, qual16, qual17, qual18};
#endregion
var parsing = namefilm.ProductlistItem();
int i = 0;
foreach (var pars in parsing)
{
labels[i].Text = parsing[i].NameFilm;
boxes[i].SizeMode = PictureBoxSizeMode.StretchImage;
boxes[i].LoadAsync(parsing[i].ImageURl);
qal[i].Text = parsing[0].Quality;
LogTex2.Text += parsing[i].NameFilm + "\r\n";
LogTex2.Text += parsing[i].ImageURl + "\r\n";
LogTex2.Text += parsing[i].Quality + "\r\n";
i++;
}
}
Выглядит это все дело вот так.
Но как сделать так, чтоб в созданный мной FlowLayoutPanel, добавлялась Panel а в эту панель уже добавлялся PictureBox, и Label в соответствии количества списка. А то сотню таких элементов добавлять будет уже не интересно. Благодарю за помощь.
Вы можее контролы добавлять динамически, вам не обяхательно создавать ваши картинки заранее. Вот пример
public class MyForm: Form
{
FlowLayoutPanel _fpanel;
public MyForm()
{
_fpanel = new FlowLayoutPanel();
_fpanel.Dock = DockStyle.Fill;
this.Controls.Add(_fpanel);
this.Load+=OnLoad;
}
private void OnLoad(object sender, EventArgs e)
{
_fpanel.Controls.Clear();
for(var i=0; i<10; i++)
{
var pb = new PictureBox();
pb.SizeMode = PictureBoxSizeMode.StretchImage;
pb.LoadAsync("url");
_fpanel.Controls.Add(pb);
}
}
}
Как видите, я тут просто прохожу циклом и добавляю в панель всё, что хочу. У меня картинки не загрузятся, потому мое окно будет выглядеть вот так
Собственно вот такой получился код:
public partial class Form1 : Form
{
ParserHTML parserHTML = new ParserHTML();
NameFilm namefilm = new NameFilm();
public Form1()
{
InitializeComponent();
ParserHTML parserHTML = new ParserHTML();
LogText.Text = parserHTML.LoadPage();
this.Controls.Add(flowLayoutPanel1);
this.Load += OnLoad;
}
private void OnLoad(object sender, EventArgs e)
{
var parsing = namefilm.ProductlistItem();
int i = 0;
foreach (var pars in parsing)
{
var pn = new Panel();
pn.Size = new Size(140, 180);
flowLayoutPanel1.Controls.Add(pn);
;
var pb = new PictureBox();
pb.SizeMode = PictureBoxSizeMode.StretchImage;
pb.Size = new Size(140, 140);
pb.LoadAsync(parsing[i].ImageURl);
pn.Controls.Add(pb);
var lb = new Label();
lb.Text = parsing[i].NameFilm;
lb.Dock = DockStyle.Bottom;
pn.Controls.Add(lb);
i++;
}
}
}
Не идеальный, но для теста подойдет, результат:
Есть chromedriverЯ хочу запустить его в 3 потока и слать данные этим инстансам из списка
Мне нужно получается подать Word файлИ в параграфе "Библиографический список" (а там их будет много) проверить следующее:
Вопрос теоретический, сделал я триггер, который следит за изменением в таблице, и изменения эти записывает в результирующую таблицуСледит...