gtk-sharp 2.12.0.0 Gtk# is thread aware, but not thread safe; See the Gtk# Thread Programming for details. A store for that provides data from an arbitrary class. It is simpler to use than the . This class provides a simple mechanism of implementing the Model required by the . [TreeNode (ColumnCount=2)] class DemoNode { string name; string email; public DemoNode (string name, string email) { this.name = name; this.email = email; } [TreeNodeValue (Column=0)] public string Name { get { return name; } } [TreeNodeValue (Column=1)] public string EMail { get { return email; } } } class Demo { NodeStore store; void PopulateStore () { NodeStore store = new NodeStore (typeof (DemoNode)); DemoNode my_node = new DemoNode ("Miguel de Icaza", "miguel@ximian.com"); store.AddNode (my_node); } Iteration: In new versions of Gtk# (2.0 and up) this class implements the interface, so code can be written like this: void DumpColumnValues (NodeStore store, int col) { foreach (object[] row in store) Console.WriteLine ("Value of column {0} is {1}", col, row [col]); } GLib.Object System.Collections.IEnumerable Method System.Void Appends the node to the root level of the tree a Adds to the end of the list of root level nodes. Method System.Void Inserts the node into the root level of the tree a the position to insert it at Adds to the list of root level nodes before the node currently at . Method Gtk.ITreeNode Returns a node given a . The path to look up. Looks up the node corresponding to and returns it, or null if the node cannot be found. To be added. Method System.Void Removes a node from the store. a Removes from the list of root level nodes. Constructor NodeStore constructor a Creates a for nodes of the specified . The type provided in must implement . Property GLib.GType Native type value. a Method System.Collections.IEnumerator Gets an enumerator for the root nodes. a Children of root nodes are not enumerated. You must traverse them independently. Method System.Void Removes all nodes from the store.