We help IT Professionals succeed at work.

Changing the enable/disable state of a form button from a Class

Andy Brown
Andy Brown asked
on
62 Views
Last Modified: 2018-10-23
First off - I'm fairly new to C#.  I have a central form (MainForm), with a panel.  This panel is used to load other forms into it.  Along the bottom of MainForm, there are five buttons - and each one has code (see below) that loads the right form into the panel, changes the text/caption of MainForm, and enables/disables the five buttons depending on which form is selected/loaded (this is the bit I am having trouble with).

        private void JournalButton_Click(object sender, EventArgs e)
        {
            JournalForm var = new JournalForm();
            Nav(var, HomeContentPanel,"Journal");
        }

Open in new window


public void Nav(Form form, Panel panel, string formCaption)
        {
               //Loads form into Panel
            form.TopLevel = false;
            form.Size = panel.Size;
            panel.Controls.Clear();
            panel.Controls.Add(form);
            form.Show();

               //Sets Text/caption of MainForm
               this.Text = formCaption;

               //Enables/disables button
              HomeButton.Enabled = form.Name.ToString() != "HomeForm";
              JournalButton.Enabled = form.Name.ToString() != "JournalForm";
        }

Open in new window


This works perfectly.  However, I wanted to move the Nav method to another class, so that I can set the panel from somewhere other than the five buttons.

Just modifying the code slightly with the MainForm variable at the start - it all works.  Except I cannot enable/disable the five buttons.

public static void NavX(Form frmMain, Form form, Panel panel, string formCaption)
{
       frmMain.Text = formCaption;
       
       frmMain.HomeButton.Enabled = form.Name.ToString() != "HomeForm";
       frmMain.JournalButton.Enabled = form.Name.ToString() != "JournalForm";
}

Open in new window


I get the red squiggles at the start of the HomButton and JournalButton code and can't figure out how to update frmMain.  As said, I am new to c#, so there's probably a better/more correct way of doing this,  But just needed a bit of advice.
Comment
Watch Question

CERTIFIED EXPERT
Most Valuable Expert 2018
Distinguished Expert 2019
Commented:
This problem has been solved!
(Unlock this solution with a 7-day Free Trial)
UNLOCK SOLUTION
Andy BrownDeveloper

Author

Commented:
Fantastic - thank you so much.