Как изменить изображение формы PictureBox с другой формы? Пример. Изображение Form2 должно изменить изображение Form1.
Я попробовал это.
exmp.Code 1
//This is for Form1
private void pictureBox1_MouseEnter(object sender, EventArgs e)
{
Form2 Fr2 = new Form2();
Fr2.Owner = this;
}
private void pictureBox2_Click(object sender, EventArgs e)
{
Fr2.Show();
}
//This is for Form2
private void pictureBox2_Click(object sender, EventArgs e)
{
try
{
(this.Owner as Form1).pictureBox1.Image = pictureBox2.Image;
}
catch
{
}
}
Этот код не работает! Но если я попробую это, это сработает.
exmp.Code 1
//Form1
private void pictureBox1_Click(object sender, EventArgs e)
{
Form2 Fr2 = new Form2();
Fr2.Show();
Fr2.Owner = this;
}
//Form2
private void pictureBox2_Click(object sender, EventArgs e)
{
try
{
(this.Owner as Form1).pictureBox1.Image = pictureBox2.Image;
}
catch
{
}
}
Но я не могу использовать второй код, потому что мне нужно щелкнуть ContextMenuStrip, чтобы открыть Form2.
Любой вопрос пишите в комментарии!
Также этот дубликат: Как получить доступ к элементу управления формы для другой формы?
Это очень отличается от PictureBox и изображений, я знаю, как это сделать со значениями, но не уверен, что знаю с изображениями. Если бы вы могли ответить на этот вопрос с решением, это было бы полезно!
Поле изображения — это специализированный элемент управления. Все шаблоны для доступа к элементу управления другой формы из формы работают в зависимости от сценария и поведения.
«Дикое» решение состоит в том, чтобы создавать формы как синглтоны. Лично я создаю все свои формы с одним экземпляром как синглтон, чтобы я мог делать все, что захочу, особенно с формой, имеющей типизированный экземпляр DataSet (нет модуля данных, как в Delphi). Условными являются только временные формы.
В Form1 «Fr2» необходимо объявить на уровне формы, чтобы вы могли получить к нему доступ как из «pictureBox1_MouseEnter», так и из «pictureBox2_Click». Установите Owner
, передав «это» в Show()
.
Это для формы 1:
private Form2 Fr2;
private void pictureBox1_MouseEnter(object sender, EventArgs e)
{
Fr2 = new Form2();
}
private void pictureBox2_Click(object sender, EventArgs e)
{
if (Fr2!=null && !Fr2.IsDisposed)
{
Fr2.Show(this); // <-- pass Form1 as the Owner
}
}
Это для формы2:
private void pictureBox2_Click(object sender, EventArgs e)
{
Form1 Fr1 = this.Owner as Form1;
if (Fr1!=null)
{
Fr1.pictureBox1.Image = pictureBox2.Image;
}
}
Однако, чтобы получить доступ к «pictureBox1» в Form1, вам нужно изменить его свойство Modifiers
на общедоступное.
Отвечает ли это на ваш вопрос? Взаимодействие между формами — Как поменять элемент управления формы с другой формы?