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: 
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.
It's dependent on when that data needs to be pushed to the UserControl. Are there events taking place on the Form that will drive the need to move data within the UserControl? If so...simply grab your instance at that point and push the data down to the UserControl via a public property.

If this is a case where events are not being used or the Form in some fashion or another "receives the data" then exposing an [event](http://msdn.microsoft.com/en-us/library/aa645739%28VS.71%29.aspx) on the Form such as...

```
public event DataHandler ReceivedData;

```

...and allow the UserControl or any other container to register for the event and receive the data via your custom event args. Pushing the event into the UserControl and forcing the Form to latch onto the UserControl seems backwards since the Form is the initiator of the data.