Итак, у меня есть Form1 с тремя пользовательскими элементами управления, такими как UC1, UC2 и UC3. Form1 содержит кнопку UC1 и UC3. И UC1, и UC3 изначально скрыты, когда приложение запускается, а событие щелчка кнопки Form1 делает UC1 видимым. UC1 содержит панель, и внутри события загрузки UC1 я добавляю UC2 в панель с помощью метода panel.Controls.Add () во время выполнения приложения. UC2 содержит кнопку, и событие нажатия этой кнопки делает UC3 видимым в форме Form1. UC3 содержит текстовое поле. Теперь, когда я нажимаю кнопку UC2 , я хочу, чтобы она передала строковое значение в текстовое поле UC3 . Как мне это сделать? или вообще мне нужно простое решение для отправки значений из одного UserControl в другой UserControl.
Вот весь мой код ...
Form1.cs
namespace Problem
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
uC11.u3Visible += UC11_u3Visible;// Event came from UC1
}
private void UC11_u3Visible(object sender, EventArgs e)
{
uC31.Visible = true;
uC11.Visible = false;
}
private void button1_Click(object sender, EventArgs e)
{
uC11.Visible = true;
}
}
}
UC1.cs
namespace Problem
{
public partial class UC1 : UserControl
{
public event EventHandler u3Visible;//Declaring a public event
public UC1()
{
InitializeComponent();
}
private void UC1_Load(object sender, EventArgs e)
{
UC2 xy = new UC2();
xy.Name = "UsrCntrl2";
xy.Location = new Point(18, panel1.Controls.Count * 73);
panel1.Controls.Add(xy);// Adding UC2 in UC1
xy.open += Xy_open;// UC2 button click event
}
private void Xy_open(object sender, EventArgs e)
{
EventHandler handler = u3Visible;
if (handler != null)
{
handler(this, new EventArgs());// Creating another event to make UC3 visible
//upon button click from UC2.
}
}
}
}
UC2.cs
namespace Problem
{
public partial class UC2 : UserControl
{
public event EventHandler open;//Declaring a public event
public UC2()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
EventHandler handler = open;
if (handler != null)
{
handler(this, new EventArgs());// Button click sending this event
}
string text = "Hello There!";// "I want this string to pass into UC3 textbox"
var ass = new UC3(text);
}
}
}
UC3.cs
namespace Problem
{
public partial class UC3 : UserControl
{
public UC3()
{
InitializeComponent();
}
public UC3(string text)
{
InitializeComponent();
TB.Text = text;// why textbox not showing this value?
MessageBox.Show(text);// while this MessageBox showing it!
}
}
}
Любая помощь будет принята с благодарностью. Заранее спасибо!