David,
Using DoDefault() and/or an explicit TextBox::KeyPress() call without a NODEFAULT will cause the doubled characters. If you are losing the function of some keys it can only be due to a NODEFAULT issued when it shouldn't be. You also need to make sure you are properly calling the other inherited code from the ParentClass.
>I have already tried this method, but it hasn't worked correctly. Some previous behavior was lost, such as the ability to use the tab key to change controls. What I am working on is actually someone elses control, and the only change I made was the change I mentioned.