user7427899
user7427899

Reputation: 23

Passing Variables from User Control to User Control

I need a way to pass user control to user controls.

I am using Windows Forms.

For example. Say I have a radiobutton in User control 1 and I want User Control 2 to call and see if that radiobutton is checked on User control 1. How would I reference that?

And for some sample code:

This is UserControl1

public void radioButton1_CheckedChanged(object sender, EventArgs e)
{

}

This is UserControl2

 private void button4_Click(object sender, EventArgs e)
{

            if (radioButton1.Checked)
               //do something
            else
               //do something
        }

Upvotes: 0

Views: 114

Answers (2)

Sergey Berezovskiy
Sergey Berezovskiy

Reputation: 236318

Seems like you have two unrelated user controls on your form. And UserControl2 (UC2) should change it's behavior is something happens on UserControl1 (UC1). That means you should have an event on UC1 which will fire if radiobutton1 checked state changes. You also will need to expose radiobutton status. You can do it either with custom EventArgs or with public property:

UserControl1

public event EventHandler SomethingChanged;

private void radioButton1_CheckedChanged(object sender, EventArgs e)
{
   if (SomethingChanged != null)
       SomethingChanged(this, EventArgs.Empty);
}

public bool IsSomethingEnabled => radioButton1.Checked;

UC2 should allow changing it's behavior. That can be done with public property

UserControl2

public bool UseCoolFeature { get; set; }

private void button4_Click(object sender, EventArgs e)
{
    if (UseCoolFeature)
       //do something
    else
       //do something else
}

And last step - coordinator which will manage both usercontrols. It's your form. Subscribe to event from UC1 and change state of UC2:

Form

private void userControl1_SomethinChanged(object sender, EventArgs e)
{
    userControl2.UseCoolFeature = ((UserControl1)sender).IsSomethingEnabled;
}

You can even use in-place event handler:

userControl1.SomethingChanged += (s,e) =>
     userControl2.UseCoolFeature = userControl1.IsSomethingEnabled;

Upvotes: 3

abc
abc

Reputation: 2437

You can store the value in your session:

UserControl1

public void radioButton1_CheckedChanged(object sender, EventArgs e)
{
    Session["radioButton1Checked"] = radioButton1.Checked;
}

UserControl2

private void button4_Click(object sender, EventArgs e)
{
    if (Session["radioButton1Checked"] != null && (bool)Session["radioButton1Checked"])
       //do something
    else
       //do something
}

Upvotes: -2

Related Questions