_Q12_
Вот мой подход:
Более логично и проще, я думаю.
Просто спрячьте и покажите usercontrol, а также передайте данные между ними через открытые переменные.
//UserControl1
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
}
//Close the UserControl from Form1
private void label1_Click(object sender, EventArgs e)
{
this.Visible = false;
}
public string data = "";
//crystal
private void button1_Click(object sender, EventArgs e)
{
data = "crystal";
Close();
}
//gas
private void button2_Click(object sender, EventArgs e)
{
data = "gas";
Close();
}
//cell
private void button3_Click(object sender, EventArgs e)
{
data = "cell";
Close();
}
//--------------------------------------------------------------------------------
//Form1
private void pictureBox1_Click(object sender, EventArgs e)
{
controlClicked = "pictureBox1";
userControl11.Visible = true;
}
string mainData = "";
string controlClicked = "";
private void userControl11_VisibleChanged(object sender, EventArgs e)
{
if (userControl11.Visible == false )
{
if (userControl11.data == "crystal")
{
mainData = "crystal";
if (controlClicked == "pictureBox1")
{
pictureBox1.BackgroundImage = Image.FromFile("1.png");
}
}
if (userControl11.data == "gas")
{
mainData = "gas";
}
if (userControl11.data == "cell")
{
mainData = "cell";
}
//-------------------------
}
}