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 a custom event in the user control and have the form hook into it. If you need custom event arguments, you can create those too.

In user control:

```
//Define your Custom Event argument
public class MyEventArgs : EventArgs
{
    //Define some fields of your custom event argument
    private int m_SomeValue = 0;

    //Define some properties of your custom event argument
    public int SomeValue
    {
        get { return m_SomeValue; }
        set { m_SomeValue = value; }
    }
}

//Define the event handler data type
public delegate void MyEventHandler(object sender, MyEventArgs e);

//Define the object which holds the outside event handlers
public event MyEventHandler SomeEvent;

//Define the function which will generate the event
public virtual void OnSomeEvent(MyEventArgs e)
{
    if (SomeEvent != null)
        SomeEvent(this, e);
}

.
. //Then later in the control
.
{
    //We need new data

    //Create the event arguments
    MyEventArgs newEvent = new MyEventArgs();

    //Set the values
    newEvent.SomeValue = 17;

    //Call the event generating function
    OnSomeEvent(newEvent);
}

```

In your form just use something like:

```
myControl.SomeEvent += new MyEventHandler(handlerName);

```

Since your event is public, you should see it in the Properties window of your control as well.

You can fancy up the event using Metadata attributes, but I leave it up to you to discover these.