Change type of property in derived class
Judging from the code you provided, the program is behaving as if you are using the new keyword.  This causes your property to behave differently based upon whether your form is used in the context of type DataObjectEditForm versus type DataObjectExEditForm.

To clarify:

var form = new DataObjectExEditForm ();
form.EditDataObject = new DataObjectEx ();

DataObjectEditForm  baseForm = form;
var  data = baseForm.EditDataObject;  // data = null!?!


From the looks of it, you should instead be using virtual/override on your property.  

public class DataOjectEditForm : Form
{
    protected DataObject _editDataObject;

    protected virtual DataObject EditDataObject
    { 
        get { return _editDataObject; }
        set { _editDataObject = value; }
    }

    //Do stuff only dependent on DataObject 
}


public class DataOjectExEditForm : DataObjectEditForm
{
    protected override DataObject EditDataObject
    { 
        get { return _editDataObject; }
        set 
        {
            if (value == null)
               _editDataObject = null;
            else _editDataObject = value as DataObjectEx ?? new DataObjectEx(value);
        }
    }

    //Add stuff dependent on the additions in DataObjectEx
}


Of course, that is only going to guarantee that the backing field used by the form is consistent.  If the bug is the result of _editDataObject being used in some contexts while _editDataObjectEx was used in other contexts, then this will solve your issue.