Here is what I am trying to do .... Windows app - with a main "navigation" form with 4 linkbuttons on it - each of them open a child form with a task to perform ... on the main form, there is a Label control for the "Active Customer" ... meaning their name and customer ID to display - showing the user which customer they are working with .... It is a sequential process - so when the user opens child form 1 - they fill out a small info page, then a customer ID is generated and I want to be able to store the customer's name in a variable and their customer id in another variable - and be able to access those values from every form in the application until either a new customer is generated overwriting the values - or the user closes the application then it can be lost in memory - or i guess ideally it would be nice to store that somewhere on the user's pc to pull up later - but that's beyond what's needed i guess ...
I am OK with either of these solutions -
A) when the ID is generated, populate the Label controls on the main form for Customer Name and Customer ID, which I can then reference throughout the life of the application from all other forms
B) store the 2 values in "global variables" which everything within the application can read/write to when needed
Here is what I first came up with - but for some reason I cannot get it to:
A) keep the stored value once the form that populates it is closed
B) get the main form to refresh itself and change the Label control values with these values - even when sent directly to it
Attempt 1:
I put this in a .cs file in the project
Expand|Select|Wrap|Line Numbers
- namespace CustomerApp
- {
- class Cust_Vals
- {
- public static class ActiveID
- {
- private static string str_aid = "";
- public static string aid
- {
- get { return str_aid; }
- set { str_aid = value; }
- }
- }
- public string aid = "";
- public static class ActiveName
- {
- private static string str_aname = "";
- public static string aname
- {
- get { return str_aname; }
- set { str_aname = value; }
- }
- }
- public string aname = "";
- }
- }
I set it like this in one form:
Expand|Select|Wrap|Line Numbers
- Cust_Vals cv = new Cust_Vals();
- cv.aname = "x";
- cv.aid = "12345";
Then later try to retrieve it like this from a different form:
Expand|Select|Wrap|Line Numbers
- Cust_Vals cv = new Cust_Vals();
- lblCustomerName.Text = cv.aname;
- lblCustomerID.Text = cv.aid;
When I do so, the values come back blank ... again, I'm sure I'm just doing something incorrectly - it's been a while since I've worked with windows forms and applications ...
Attempt 2:
I created a method in my main form to populate the Labels and allow the 2 values to be passed in, then made it public so I can call it from another form ... this works fine, I can step through and see the values come in correctly - but my main form never changes the values visually - I've tried doing a .Refresh() or .Invalidate() .... even tried hiding the form, calling the function, then showing the form with a .Refresh() attached and still - blank Label controls ...
Expand|Select|Wrap|Line Numbers
- public void ActivateCustomer(string Cust, string ID)
- {
- lblCustomerName.Text = Cust;
- lblCustomerID.Text = ID;
- this.Refresh();
- }
Expand|Select|Wrap|Line Numbers
- frmMain frm = new frmMain();
- frm.ActivateCustomer("x", "1");
The values pass correctly, but the Labels on the form never update ....
Any help would be greatly appreciated - thanks so much - I know this is probably something stupid!