gtk-sharp Gtk# is thread aware, but not thread safe; See the Gtk# Thread Programming for details. GLib.Object System.Collections.IEnumerable 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]); } Constructor a NodeStore constructor Creates a for nodes of the specified . The type provided in must implement . Method System.Void a Appends the node to the root level of the tree Adds to the end of the list of root level nodes. Method System.Void a the position to insert it at Inserts the node into the root level of the tree Adds to the list of root level nodes before the node currently at . Method System.Void Removes all nodes from the store. 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 Gtk.ITreeNode The path to look up. Returns a node given a . To be added. Looks up the node corresponding to and returns it, or null if the node cannot be found. Method System.Void a Removes a node from the store. Removes from the list of root level nodes.