See bug 661753: TreeNode clones aren't complete, some properties are missing.

This is the code I have so far (in TreeNode.cs):


                public virtual object Clone()
                {
                        TreeNode tn = (TreeNode)Activator.CreateInstance 
(GetType ());
                        tn.name = name;
                        tn.text = text;
                        tn.image_key = image_key;
                        tn.image_index = image_index;
                        tn.selected_image_index = selected_image_index;
                        tn.selected_image_key = selected_image_key;
                        tn.state_image_index = state_image_index;
                        tn.state_image_key = state_image_key;
                        if (nodes != null) {
                                foreach (TreeNode child in nodes)
                                        tn.nodes.Add ((TreeNode)child.Clone ());
                        }
                        if (context_menu != null) {
                            tn.context_menu = new ContextMenu();
                                foreach (MenuItem item in 
context_menu.menu_items)
                                    tn.context_menu.menu_items.Add 
(item.CloneMenu ());
                        }
                        if (context_menu_strip != null) {
                            tn.context_menu_strip = new ContextMenuStrip();
                                //foreach (ToolStripItem item in 
context_menu_strip.Items)
                                //    tn.context_menu_strip.Items.Add 
(item.Clone ());
                        }
                        tn.tag = tag;
                        tn.check = check;
                        tn.tool_tip_text = tool_tip_text;
                        if (prop_bag != null)
                                tn.prop_bag = OwnerDrawPropertyBag.Copy 
(prop_bag);
                        return tn;      
                }


However, the problem is the commented lines for context_menu_strip: I can't 
clone the ToolStripItem objects, as it has no clone method.
So, what would be the best way to clone the ToolStripItem objects? Do I have to 
copy each property manually (as in here: 
http://blogs.msdn.com/b/jfoscoding/archive/2005/09/28/475177.aspx)? Hopefully 
not... If I have to, maybe I should make it an internal method inside 
ToolStripItem, so other objects can reuse it...?

Thanks for the help.

PS: the original code used both private fields and public properties, but 
mostly private fields, so I homogenized the whole thing and used private fields 
everywhere (as I don't think it's necessary to run the property code in this 
case). Maybe I should have used public properties instead... *shrugs*
_______________________________________________
Mono-winforms-list maillist  -  Mono-winforms-list@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-winforms-list

Reply via email to