Avatar of Andy Brown
Andy Brown
Flag for United Kingdom of Great Britain and Northern Ireland asked on

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

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.
C#

Avatar of undefined
Last Comment
Andy Brown

8/22/2022 - Mon
ASKER CERTIFIED SOLUTION
Chris Stanyon

Log in or sign up to see answer
Become an EE member today7-DAY FREE TRIAL
Members can start a 7-Day Free trial then enjoy unlimited access to the platform
Sign up - Free for 7 days
or
Learn why we charge membership fees
We get it - no one likes a content blocker. Take one extra minute and find out why we block content.
Not exactly the question you had in mind?
Sign up for an EE membership and get your own personalized solution. With an EE membership, you can ask unlimited troubleshooting, research, or opinion questions.
ask a question
Andy Brown

ASKER
Fantastic - thank you so much.
Experts Exchange has (a) saved my job multiple times, (b) saved me hours, days, and even weeks of work, and often (c) makes me look like a superhero! This place is MAGIC!
Walt Forbes