﻿<?xml version="1.0" encoding="utf-8"?><Type Name="TreeSelection" FullName="Gtk.TreeSelection"><TypeSignature Language="C#" Maintainer="Lee Mallabone" Value="public class TreeSelection : GLib.Object" /><AssemblyInfo><AssemblyName>gtk-sharp</AssemblyName><AssemblyPublicKey></AssemblyPublicKey><AssemblyVersion>2.12.0.0</AssemblyVersion></AssemblyInfo><ThreadSafetyStatement>Gtk# is thread aware, but not thread safe; See the <link location="node:gtk-sharp/programming/threads">Gtk# Thread Programming</link> for details.</ThreadSafetyStatement><Docs><summary>The selection object for <see cref="T:Gtk.TreeView" />.</summary><remarks><para>TreeSelection provides a single class for managing selection information on the List/Tree widget.</para><para>A TreeSelection object is automatically created when a new <see cref="T:Gtk.TreeView" /> widget is created and is inherently tied to it. A TreeSelection cannot exist independently of a <see cref="T:Gtk.TreeView" />. Selection information is retrieved from the <see cref="T:Gtk.TreeView" /> with the <see cref="P:Gtk.TreeView.Selection" /> property.</para><para>TreeSelection can check the selection status of the tree, as well as select and deselect individual rows. Selection is done completely on the view. As a result, multiple views of the same model can have completely different selections. Additionally, you cannot change the selection of a row that is not currently displayed by the view without expanding its parents first.</para><para>One of the important things to remember when monitoring the selection of a view is that the <see cref="E:Gtk.TreeSelection.Changed" /> event is mostly a hint. For example, it may only fire once when a range of rows is selected. It may also fire when nothing has happened, such as when <see cref="M:Gtk.TreeSelection.SelectPath(Gtk.TreePath)" /> is called on a row that is already selected.</para></remarks><example><code lang="C#">
using System;
using Gtk;
 
class Selection
{
        static void Main ()
        {
                Application.Init ();
                Window win = new Window ("TreeSelection sample");
                win.DeleteEvent += OnWinDelete;
 
                TreeView tv = new TreeView ();
                tv.AppendColumn ("Items", new CellRendererText (), "text", 0);
 
                ListStore store = new ListStore (typeof (string));
                store.AppendValues ("item 1");
                store.AppendValues ("item 2");
                tv.Model = store;
 
                tv.Selection.Changed += OnSelectionChanged;
 
                win.Add (tv);
                win.ShowAll ();
                Application.Run ();
        }
 
        static void OnSelectionChanged (object o, EventArgs args)
        {
                TreeIter iter;
                TreeModel model;
 
                if (((TreeSelection)o).GetSelected (out model, out iter))
                {
                        string val = (string) model.GetValue (iter, 0);
                        Console.WriteLine ("{0} was selected", val);
                }
        }
 
        static void OnWinDelete (object o, DeleteEventArgs args)
        {
                Application.Quit ();
        }
}
	  </code></example></Docs><Base><BaseTypeName>GLib.Object</BaseTypeName></Base><Interfaces></Interfaces><Members><Member MemberName="SelectPath"><MemberSignature Language="C#" Value="public void SelectPath (Gtk.TreePath path);" /><MemberType>Method</MemberType><ReturnValue><ReturnType>System.Void</ReturnType></ReturnValue><Parameters><Parameter Name="path" Type="Gtk.TreePath" /></Parameters><Docs><summary>Selects the specified row that <paramref name="path" /> represents.</summary><param name="path">A row to be selected.</param><remarks /></Docs></Member><Member MemberName="PathIsSelected"><MemberSignature Language="C#" Value="public bool PathIsSelected (Gtk.TreePath path);" /><MemberType>Method</MemberType><ReturnValue><ReturnType>System.Boolean</ReturnType></ReturnValue><Parameters><Parameter Name="path" Type="Gtk.TreePath" /></Parameters><Docs><summary>Determines whether a <see cref="T:Gtk.TreePath" /> has been selected in this <see cref="T:TreeView" />.</summary><param name="path">The path to a node whose selected status should be checked.</param><returns><see langword="true" /> if <paramref name="path" /> is selected, <see langword="false" /> otherwise.</returns><remarks /></Docs></Member><Member MemberName="UnselectIter"><MemberSignature Language="C#" Value="public void UnselectIter (Gtk.TreeIter iter);" /><MemberType>Method</MemberType><ReturnValue><ReturnType>System.Void</ReturnType></ReturnValue><Parameters><Parameter Name="iter" Type="Gtk.TreeIter" /></Parameters><Docs><summary>Deselects the specified position in the tree.</summary><param name="iter">The tree position that should be deselected.</param><remarks><para>See also, <see cref="M:Gtk.TreeSelection.UnselectPath(Gtk.TreePath)" /> and <see cref="M:Gtk.TreeSelection.UnselectAll()" />.</para></remarks><example><code language="C#">
using System;
using Gtk;
 
class TreeSelectionSample
{
	Label selected;
 
	static void Main ()
	{
		Application.Init ();
		new TreeSelectionSample ();
		Application.Run ();
	}
																				   
	TreeSelectionSample ()
	{
		Window win = new Window ("TreeView selection sample");
		win.SetDefaultSize (400, 300);
		win.DeleteEvent += new DeleteEventHandler (OnWinDelete);

		HBox hbox = new HBox (false, 0);
			 
		TreeView tv = new TreeView ();
		tv.Selection.Changed += new EventHandler (OnSelectionChanged);
		tv.AppendColumn ("items", new CellRendererText (), "text", 0);
								  
		TreeStore store = new TreeStore (typeof (string));
		for (int i = 0; i &lt; 10; i++)
		{
			store.AppendValues ("item " + i.ToString ());
		}
																   
		tv.Model = store;
																	    
		hbox.PackStart (tv);
													 
		selected = new Label ();
		hbox.PackStart (selected);
																	  
		win.Add (hbox);
		win.ShowAll ();
	}
																   
	void OnSelectionChanged (object o, EventArgs args)
	{
		TreeSelection ts = (TreeSelection) o;
		TreeIter iter;
		TreeModel model;
		ts.GetSelected (out model, out iter);
																	    
		selected.Text = (string) model.GetValue (iter, 0);
	}
																	 
	void OnWinDelete (object o, DeleteEventArgs args)
	{
		Application.Quit ();
	}
}
		</code></example></Docs></Member><Member MemberName="IterIsSelected"><MemberSignature Language="C#" Value="public bool IterIsSelected (Gtk.TreeIter iter);" /><MemberType>Method</MemberType><ReturnValue><ReturnType>System.Boolean</ReturnType></ReturnValue><Parameters><Parameter Name="iter" Type="Gtk.TreeIter" /></Parameters><Docs><summary>Determine if the iter is selected.</summary><param name="iter">The tree location to check</param><returns><see langword="true" /> if the tree node specified by <paramref name="iter" /> is selected, <see langword="false" /> otherwise.</returns><remarks><para>See also <see cref="M:Gtk.TreeSelection.PathIsSelected(Gtk.TreePath)" />.</para></remarks></Docs></Member><Member MemberName="SelectAll"><MemberSignature Language="C#" Value="public void SelectAll ();" /><MemberType>Method</MemberType><ReturnValue><ReturnType>System.Void</ReturnType></ReturnValue><Parameters /><Docs><summary>Selects every node in this <see cref="T:Gtk.TreeView" />.</summary><remarks><para>The <see cref="P:Gtk.TreeSelection.Mode" /> must be set to <see cref="P:Gtk.SelectionMode.Multiple" /> for this method to work.</para></remarks></Docs></Member><Member MemberName="UnselectPath"><MemberSignature Language="C#" Value="public void UnselectPath (Gtk.TreePath path);" /><MemberType>Method</MemberType><ReturnValue><ReturnType>System.Void</ReturnType></ReturnValue><Parameters><Parameter Name="path" Type="Gtk.TreePath" /></Parameters><Docs><summary>Deselects the tree node that <paramref name="path" /> refers to.</summary><param name="path">A node in the tree.</param><remarks><para>See also <see cref="M:Gtk.TreeSelection.UnselectIter(Gtk.TreeIter)" />.</para></remarks></Docs></Member><Member MemberName="SelectRange"><MemberSignature Language="C#" Value="public void SelectRange (Gtk.TreePath start_path, Gtk.TreePath end_path);" /><MemberType>Method</MemberType><ReturnValue><ReturnType>System.Void</ReturnType></ReturnValue><Parameters><Parameter Name="start_path" Type="Gtk.TreePath" /><Parameter Name="end_path" Type="Gtk.TreePath" /></Parameters><Docs><summary>Selects all the nodes that appear between <paramref name="start_path" /> and <paramref name="end_path" />.</summary><param name="start_path">The first node to select on the tree.</param><param name="end_path">The last node to select on the tree.</param><remarks /></Docs></Member><Member MemberName="UnselectAll"><MemberSignature Language="C#" Value="public void UnselectAll ();" /><MemberType>Method</MemberType><ReturnValue><ReturnType>System.Void</ReturnType></ReturnValue><Parameters /><Docs><summary>Sets all nodes in the <see cref="T:Gtk.TreeView" /> as unselected.</summary><remarks /></Docs></Member><Member MemberName="SelectedForeach"><MemberSignature Language="C#" Value="public void SelectedForeach (Gtk.TreeSelectionForeachFunc func);" /><MemberType>Method</MemberType><ReturnValue><ReturnType>System.Void</ReturnType></ReturnValue><Parameters><Parameter Name="func" Type="Gtk.TreeSelectionForeachFunc" /></Parameters><Docs><summary>Invokes the delegate passed in by <paramref name="func" /> for each selected row in the <see cref="T:Gtk.TreeView" />.</summary><param name="func">The delegate that should be called for each selected row.</param><remarks><para>This method is useful when the <see cref="P:Gtk.TreeSelection.Mode" /> of this TreeSelection is set to <see cref="P:Gtk.Selection.Multiple" />. It is currently the only way to access selection information for multiple rows. See the class overview for an example on how to effectively use this method for selection tracking.</para></remarks></Docs></Member><Member MemberName="SetSelectFunction" Deprecated="true"><MemberSignature Language="C#" Value="public void SetSelectFunction (Gtk.TreeSelectionFunc func, IntPtr data, Gtk.DestroyNotify destroy);" /><MemberType>Method</MemberType><ReturnValue><ReturnType>System.Void</ReturnType></ReturnValue><Parameters><Parameter Name="func" Type="Gtk.TreeSelectionFunc" /><Parameter Name="data" Type="System.IntPtr" /><Parameter Name="destroy" Type="Gtk.DestroyNotify" /></Parameters><Docs><summary>Add a hook into selection and unselection.</summary><param name="func">A delegate to invoke before a node is (un)selected.</param><param name="data">ignored</param><param name="destroy">ignored</param><remarks>This method is obsolete.  New code should use the <see cref="M:Gtk.TreeSelection.SelectFunction" /> property.</remarks></Docs></Member><Member MemberName="SelectFunction"><MemberSignature Language="C#" Value="public Gtk.TreeSelectionFunc SelectFunction { set; };" /><MemberType>Property</MemberType><ReturnValue><ReturnType>Gtk.TreeSelectionFunc</ReturnType></ReturnValue><Docs><summary>A hook into selection and unselection</summary><value>a <see cref="T:Gtk.TreeSelectionFunc" /></value><remarks><para>If set, <paramref name="func" /> is called before any node is selected or unselected, giving some control over which nodes are selected. The select function should return <see langword="true" /> if the state of the node may be toggled, and <see langword="false" /> if the state of the node should be left unchanged.</para></remarks><since version="Gtk# 2.4" /></Docs></Member><Member MemberName="SelectIter"><MemberSignature Language="C#" Value="public void SelectIter (Gtk.TreeIter iter);" /><MemberType>Method</MemberType><ReturnValue><ReturnType>System.Void</ReturnType></ReturnValue><Parameters><Parameter Name="iter" Type="Gtk.TreeIter" /></Parameters><Docs><summary>Selects the specified <see cref="T:Gtk.TreeIter" />.</summary><param name="iter">Indicates which row to select.</param><remarks><para>See also <see cref="M:Gtk.TreeSelection.SelectAll()" /> and <see cref="M:Gtk.TreeSelection.SelectPath(Gtk.TreePath)" />.</para></remarks></Docs></Member><Member MemberName=".ctor"><MemberSignature Language="C#" Value="public TreeSelection (IntPtr raw);" /><MemberType>Constructor</MemberType><ReturnValue /><Parameters><Parameter Name="raw" Type="System.IntPtr" /></Parameters><Docs><summary>Internal constructor</summary><param name="raw">Pointer to the C object.</param><remarks><para>This is an internal constructor, and should not be used by user code.</para></remarks></Docs></Member><Member MemberName="Mode"><MemberSignature Language="C#" Value="public Gtk.SelectionMode Mode { set; get; };" /><MemberType>Property</MemberType><ReturnValue><ReturnType>Gtk.SelectionMode</ReturnType></ReturnValue><Parameters></Parameters><Docs><summary>Manages the way rows can be selected.</summary><value>The current mode dictating selection behaviour.</value><remarks><para>Rows may be deselected by changing this property. For example, if <see cref="P:Gtk.SelectionMode.Multiple" /> rows are selected and the mode is changed to <see cref="P:Gtk.SelectionMode.Single" /> or <see cref="P:Gtk.SelectionMode.Browse" />.</para></remarks></Docs></Member><Member MemberName="UserData"><MemberSignature Language="C#" Value="public IntPtr UserData { get; };" /><MemberType>Property</MemberType><ReturnValue><ReturnType>System.IntPtr</ReturnType></ReturnValue><Docs><summary>Get the data associated with the <see cref="T:Gtk.TreeSelectionFunc" /> that has been setup for this <see cref="T:Gtk.TreeSelection" />.</summary><value>The raw data that was set when <see cref="M:Gtk.TreeSelection.SetSelectFunction(Gtk.TreeSelectionFunc,System.IntPtr,Gtk.DestroyNotify)" /> was called.</value><remarks /></Docs></Member><Member MemberName="TreeView"><MemberSignature Language="C#" Value="public Gtk.TreeView TreeView { get; };" /><MemberType>Property</MemberType><ReturnValue><ReturnType>Gtk.TreeView</ReturnType></ReturnValue><Docs><summary>Get the <see cref="T:Gtk.TreeView" /> that this <see cref="T:Gtk.TreeSelection" /> is associated with.</summary><value>The <see cref="T:Gtk.TreeView" /> that this <see cref="T:Gtk.TreeSelection" /> is tied to.</value><remarks><para>A <see cref="T:Gtk.TreeSelection" /> object can only be retrieved from a <see cref="T:Gtk.TreeView" />. That is done with its <see cref="P:Gtk.TreeView.Selection" /> property.</para></remarks></Docs></Member><Member MemberName="Changed"><MemberSignature Language="C#" Value="public event EventHandler Changed;" /><MemberType>Event</MemberType><ReturnValue><ReturnType>System.EventHandler</ReturnType></ReturnValue><Parameters /><Docs><summary>Raised when the selection (may have) changed.</summary><remarks><para>This event is mostly a hint. It may only be raised once when a range of rows are selected, and it may occasionally be raised when nothing has happened.</para></remarks></Docs><Attributes><Attribute><AttributeName>GLib.Signal("changed")</AttributeName></Attribute></Attributes></Member><Member MemberName="UnselectRange"><MemberSignature Language="C#" Value="public void UnselectRange (Gtk.TreePath start_path, Gtk.TreePath end_path);" /><MemberType>Method</MemberType><ReturnValue><ReturnType>System.Void</ReturnType></ReturnValue><Parameters><Parameter Name="start_path" Type="Gtk.TreePath" /><Parameter Name="end_path" Type="Gtk.TreePath" /></Parameters><Docs><summary>Unselects everything between one path and another.</summary><param name="start_path"><see cref="T:Gtk.TreePath" /> to begin range.</param><param name="end_path"><see cref="T:Gtk.TreePath" /> to end range.</param><remarks /></Docs></Member><Member MemberName="CountSelectedRows"><MemberSignature Language="C#" Value="public int CountSelectedRows ();" /><MemberType>Method</MemberType><ReturnValue><ReturnType>System.Int32</ReturnType></ReturnValue><Parameters /><Docs><summary>Get the number of selected rows.</summary><returns>The number of selected rows</returns><remarks /></Docs></Member><Member MemberName="GetSelected"><MemberSignature Language="C#" Value="public bool GetSelected (out Gtk.TreeModel model, out Gtk.TreeIter iter);" /><MemberType>Method</MemberType><ReturnValue><ReturnType>System.Boolean</ReturnType></ReturnValue><Parameters><Parameter Name="model" Type="Gtk.TreeModel&amp;" RefType="out" /><Parameter Name="iter" Type="Gtk.TreeIter&amp;" RefType="out" /></Parameters><Docs><summary>Get information about the currently selected node.</summary><param name="model">A convenient accessor to the <see cref="T:Gtk.TreeModel" /> that this TreeSelection's <see cref="T:Gtk.TreeView" /> is associated with.</param><param name="iter">The position that was selected.</param><returns><see langword="true" /> if a row was selected.</returns><remarks><para>This method will not work if the TreeSelection <see cref="P:Gtk.TreeSelection.Mode" /> has been set to <see cref="P:Gtk.SelectionMode.Multiple" />. In that case you should use <see cref="M:Gtk.TreeSelection.SelectedForeach(Gtk.TreeSelectionForEach)" />.</para></remarks></Docs></Member><Member MemberName="GType"><MemberSignature Language="C#" Value="public static GLib.GType GType { get; };" /><MemberType>Property</MemberType><ReturnValue><ReturnType>GLib.GType</ReturnType></ReturnValue><Parameters /><Docs><summary>GType Property.</summary><value>a <see cref="T:GLib.GType" /></value><remarks>Returns the native <see cref="T:GLib.GType" /> value for <see cref="T:Gtk.TreeSelection" />.</remarks></Docs></Member><Member MemberName="OnChanged"><MemberSignature Language="C#" Value="protected virtual void OnChanged ();" /><MemberType>Method</MemberType><ReturnValue><ReturnType>System.Void</ReturnType></ReturnValue><Parameters /><Docs><summary>Default handler for the <see cref="M:Gtk.TreeSelection.Changed" /> event.</summary><remarks>Override this method in a subclass to provide a default handler for the <see cref="M:Gtk.TreeSelection.Changed" /> event.</remarks></Docs></Member><Member MemberName=".ctor"><MemberSignature Language="C#" Value="protected TreeSelection (GLib.GType gtype);" /><MemberType>Constructor</MemberType><ReturnValue /><Parameters><Parameter Name="gtype" Type="GLib.GType" /></Parameters><Docs><summary>Protected Constructor.</summary><param name="gtype">a <see cref="T:GLib.GType" /></param><remarks>Chain to this constructor if you have manually registered a native <see cref="T:GLib.GType" /> value for your subclass.</remarks></Docs><Attributes><Attribute><AttributeName>System.Obsolete</AttributeName></Attribute></Attributes></Member><Member MemberName="GetSelectedRows"><MemberSignature Language="C#" Value="public Gtk.TreePath[] GetSelectedRows (out Gtk.TreeModel model);" /><MemberType>Method</MemberType><ReturnValue><ReturnType>Gtk.TreePath[]</ReturnType></ReturnValue><Parameters><Parameter Name="model" Type="Gtk.TreeModel&amp;" RefType="out" /></Parameters><Docs><summary>Returns an array of <see cref="T:Gtk.TreePath" />s representing the selected rows.</summary><param name="model">The model the <see cref="T:Gtk.TreeView" /> is bound to.</param><returns>Selected rows in an array of <see cref="T:Gtk.TreePath" />s</returns><remarks /></Docs></Member><Member MemberName=".ctor"><MemberSignature Language="C#" Value="protected TreeSelection ();" /><MemberType>Constructor</MemberType><ReturnValue /><Parameters /><Docs><summary>Protected constructor.</summary><remarks /></Docs></Member><Member MemberName="GetSelectedRows"><MemberSignature Language="C#" Value="public Gtk.TreePath[] GetSelectedRows ();" /><MemberType>Method</MemberType><ReturnValue><ReturnType>Gtk.TreePath[]</ReturnType></ReturnValue><Parameters /><Docs><summary>Returns an array of <see cref="T:Gtk.TreePath" />s representing the selected rows.</summary><returns>Selected rows in an array of <see cref="T:Gtk.TreePath" />s</returns><remarks /><since version="Gtk# 2.4" /></Docs></Member><Member MemberName="GetSelected"><MemberSignature Language="C#" Value="public bool GetSelected (out Gtk.TreeIter iter);" /><MemberType>Method</MemberType><ReturnValue><ReturnType>System.Boolean</ReturnType></ReturnValue><Parameters><Parameter Name="iter" Type="Gtk.TreeIter&amp;" RefType="out" /></Parameters><Docs><param name="iter">The position that was selected.</param><summary>Gets information about the currently selected node.</summary><returns><see langword="true" /> if a row is selected.</returns><remarks>This convenience method doesnt require an out <see cref="Gtk.TreeModel" />. It is useful in the case that you already have a copy of the TreeModel.</remarks></Docs></Member></Members></Type>