код.
private void CharacterAdder(List<Character> characters)
{
foreach (var character in characters)
{
Panel panel = new Panel
{
Width = 300,
Height = 300
};
PictureBox pictureBox = new PictureBox
{
Width = 250,
Height = 250,
SizeMode = PictureBoxSizeMode.StretchImage,
};
Label label = new Label
{
Text = character.Name,
Font = new Font(FontFamily.GenericMonospace, 20)
};
pictureBox.Load(character.ImageUrl);
panel.Controls.Add(label);
panel.Controls.Add(pictureBox);
pictureBox.Click += characterPanel_Click;
flowLayoutPanel1.Controls.Add(panel);
}
}
private void characterPanel_Click(object sender, EventArgs e)
{
MessageBox.Show("Test");
this.Visible = false;
Form2 form2 = new Form2("hello");
form2.FormClosed += new FormClosedEventHandler(otherForm_FormClosed);
form2.Show();
}
Нужно чтобы по клику на пикчур бокс, вызывалось другое окно. И с этим пока справился.
Проблема состоит в том, как передать методу characterPanel_Click() текст
Text = character.Name
И желательно самому конструктору второй формы вместо «hello»
Этого динамиески сгенереного контрола ?
У PictureBox, как и любого контрола, есть свойство Tag, в него можно передать любые данные для контрола, в твоем случае строку character.Name. В методе characterPanel_Click в sender лежит PictureBox, оттуда этот Tag забираешь
Не знал. Спасибо огромное!
Обсуждают сегодня