Как передать значения между UserControls? - PullRequest
0 голосов
/ 06 ноября 2019

Итак, у меня есть 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.

This is the Form1 with Button

This is when Form1 Button click makes UC1 visible and also UC2 get added at run time

This is when UC3 gets visible with a textbox after button click event from UC2

Вот весь мой код ...

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!
    }
  }
}

Любая помощь будет принята с благодарностью. Заранее спасибо!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...