Question: I have an image with a background color and I'm putting that in a div with the same background color. For some reason I cant save this image as a PNG and have the image bg color show the same as the bg color in the div across all browsers on all operating systems.

At first it looked fine on Windows/Mac in every browser except IE. So I tried using tweakPNG to remove the color profile and gamma properties and that seemed to fix for IE but now I have the issue in Firefox on Linux for some reason?

Any ideas/insight? Thanks

Answer: 
You can subscribe the form to an event raised on the UserControl. 

Your archiecture dictates where and when you need to subscribe to the data event. We can't answer that without knowing a little more about how your whether you are adding the control at runtime or design time. Each case will require a little derivation. From the perspective of adding your control at runtime, you could do something similar to the following:

```
// Your sample control
public class MyUserControl : Control
{
    public event EventHandler<EventArgs> INeedData;
    public Data Data {get; set;}

    private class DoSomething()
    {
        if(INeedData!=null) INeedData(this,null);
    }
}

...

// Your Form, in the case that the control isn't already added.
var _myUserControl = new MyUserControl();
private void Form1_Load(object sender, EventArgs e)
{
    _myUserControl.INeedData += new EventHandler<EventArgs>(MyUserControl_INeedData);
    this.Controls.Add(myUserControl);
}

void MyUserControl_INeedData(object sender, EventArgs e)
{
    _myUserControl.Data = SomeData;
}

```
Create an event on the user control where the event args are editable. Let the form attach a handler to that event, which updates those fields. Use those fields in the OnEvent method.

[untested]
eg. 

```
public delegate void NeedsUserDataEventHandler(object sender, NeedsUserDataEventArgs args);

public class NeedsUserDataEventArgs : EventArgs
{
    public UserData UserData { get; set; }
}

// In Control
public event NeedsUserDataEventHandler NeedsUserData;

public void OnNeedsUserData(NeedsUserDataEventArgs args)
{
    NeedsUserDataEventHandler handler = NeedsUserData;
    if (handler != null) handler(this, args);
    // store your data somewhere here
}

// In Form
public override void OnLoad(object sender, EventArgs args)
{
    control.NeedsUserData += ControlNeedsUserData;
}

public override void OnClosed(object sender, EventArgs args)
{
    control.NeedsUserData -= ControlNeedsUserData;
}

public void ControlNeedsUserData (object sender, NeedsUserDataEventArgs args)
{
    args.UserData = // set whatever here
}

```