Hello,
I am trying to create a custom control derived from a UltraComboEditor which is preconfigured with a stateEditorbutton added to ButtonsLeft and the items list pre-populated. The StateEditor button would then have available methods to null/select items in the combo.
When I add the StateEditorButton "myCheckBox" to the button collection it will show up on the design surface. However, the designer also generates code to add the same stateEditor button which when run then fails with the exception for invalid key (as the button is already in the collection.)
Also, the items being configured are added at Design time even though the code is for !DesignMode.
I would appreciate any suggestions on how to pre-configure the buttons left. Also any samples for derived UltraComboEditor would be helpful.
Wendy
Hi Mike,
I was using the constructor and encountering the double initialization as you describe.
OnEndInit() works well for the buttons. Now, I have also used this method to load the combo items and avoid serialization of the items too.
Thanks,
Hi Wendy,
In what method of the derived control are you adding the button? My guess is that you are probably using the constructor. This won't work very well, because Visual Studio will serialize and deserialize the button. So when you open your form, you will add the button in your constructor and then VS tries to add it again when it deserializes the control.
So what you really need here is a method that gets called after the control has been deserialized so you can add the button only if it does not already exist.
Luckily, there is already a method on the control which fires when deserialization is complete. So I recommend that you override the OnEndInit method. Call the base first. Then check to see if the button already exists in the ButtonsRight collection and if not, add it.