title: User Control to pass event back to parent form
body: <p>I have a main form with 3 User Controls attached to it. How can I have events inside a specific User Control reach out and modify the UI of the other two User Controls without creating spaghetti code?</p>
  
  <p>Main Form (Form1.cs)   </p>
  
  <pre><code>    public partial class Form1 : Form
     {
        private UserControl1 userControl11;
        private UserControl2 userControl21;
        private UserControl3 userControl31;
  
        public Form1()
        {
           InitializeComponent();
        }
     }
  </code></pre>
  
  <p>UserControl1.cs</p>
  
  <pre><code>public partial class UserControl1 : UserControl
  {
      public UserControl1()
      {
          InitializeComponent();
      }
  
      private void button1_Click(object sender, EventArgs e)
      {
          // Change buttons around and fill in some data on user control 2 and 3
      }
  
      private void button2_Click(object sender, EventArgs e)
      {
          // Remove certain elements from control2 and 3
      }
  
      // .. So forth
  }
  </code></pre>
  
  <p>I will have many events that do many different things on the other two user controls. I am creating a basic interface that's similar to Visual Studio where I can open projects, close them, add files, etc. These actions on one form should load up different windows and such in the other controls. What's the best method to achieve this? Creating custom events and parsing each event in the main form? Or accessing each user control directly from the first one? Or...?</p>