Thanks for the input, and we talked it over a bit more and tend to agree. There atleast one gotcha with trying to implement SelectAll, Copy, Cut, Paste, and Delete for the "control" level. Editing in the parts currently works like a TextBox. Therefore, the Ctrl+A would still need to be used to select all the text of the part, in order to overwrite it all.
We've had requests for a feature that would basically remove the caret, and require the user to re-type all the text for each part. So for the year of a DateTimeEditBox you couldn't move over and change the last digit, you would have to re-type the first three also. This would work around that, but what we are discussing here would have to work without that feature enabled also.
What we were thinking was:
1. SelectAll would work like a toggle.
- If currently no selection, SelectAll would select all the text of the active part.
- If all the text of the current part is selected, then SelectAll would be handled by the PartGroup/PartEditBox and select all the text from all the parts.
2. Copy would copy the current selection (whether at Part or PartGroup/PartEditBox level)
3. Cut would copy the current selection (whether at Part or PartGroup/PartEditBox level), but would also delete the selected parts (essientially null out the value).
4. Delete would functional normally if no selection or the selection is contained within a part. Otherwise it would delete the selected parts (essientially null out the value).
5. Paste would first be seen by the Part (really a MaskedTextBox). If the clipboard text can be pasted into the part (without violating any masks), then it would insert the text into the part. If the text cannot be pasted (for whatever reason), the PartGroup/PartEditBox would get a crack at it. The PartGroup/PartEditBox, could then attempt to update several parts based on the specified text.
Some other ideas we had are:
6. Parts probably need a way to identify that they are "selectable". This would help to visually present the selection of multiple parts, if for example there was a button
between the date and time in a DateTimeEditBox.
7. If there is no selection, should Copy do nothing, copy the current part's value, or copy the control value?
How does that sound?