2016-05-03 10 views
0

Ich bin neu bei Gtk und ich verwende Gtk #. Ich verwende eine TreeView-Komponente und möchte wissen, wann der Benutzer einen neuen Eintrag auswählt.Gtk # TreeView bestimmen, welcher Artikel ausgewählt ist

Ich habe versucht, mit der TreeView.Selection.SelectFunction. Dies wird jedoch aufgerufen, bevor die Auswahl getroffen wird, was nicht das ist, was ich möchte. Ich möchte wissen, was der Benutzer gerade ausgewählt hat und nicht, was zuvor ausgewählt wurde. Wie kann ich das erreichen?

Dank

Dies ist, was zur Zeit

Ich habe
catalogTreeView.Selection.SelectFunction = CategorySelected; 


bool CategorySelected(Gtk.TreeSelection selection, Gtk.TreeModel model, Gtk.TreePath path, bool abool) { 
    TreeIter iter; 


    if (selection.GetSelected (out model, out iter)) { 
     Console.WriteLine("abool = " + abool); 
     Console.WriteLine("Path of selected row = {0}", model.GetPath (iter)); 
     Console.WriteLine(model.GetValue (iter, 0)); 
    } 

    return true; 
} 

Antwort

0

Sie für die ButtonPressEvent einen Handler wollen, in dem Sie die treeview.Selection.GetSelected() -Operation verwenden können das ausgewählte Modell und iter abrufen wie du schon bist. NB. Sie müssen das GLib.ConnectBeforeAttribute-Attribut zu diesem Ereignishandler hinzufügen und das Ereignis der Ereignisliste für die Strukturansicht hinzufügen. Z.B.

treeview.Events |= EventMask.ButtonPressMask; 
treeview.ButtonPressEvent += YourOnButtonPressEvent; 

... 

[GLib.ConnectBeforeAttribute] 
protected void YourOnButtonPressEvent (object o, ButtonPressEventArgs args) 
{ 
    // code here 
} 
+0

Also habe ich versucht, dies zu tun, aber die YourOnButtonPressEvent Funktion wird noch früher aufgerufen als die CategorySelected-Funktion, die ich hatte. Ich brauche eine Funktion, die später aufgerufen wird, nachdem die Auswahl aktualisiert wurde. – Dalanchoo

+0

Hallo, vielleicht habe ich missverstanden, was du hier erreichen willst. Wenn Sie sagen, bevor die Auswahl getroffen wird, was meinst du? – muszeo

+0

Ich mache eine App, die in Spalten aufgeteilt ist. Die Spalte 1 verwendet eine Baumansicht als Filter. Basierend auf der Benutzerauswahl fülle ich die Spalte 2. Spalte 1 enthält Knoten namens "playerItems", "courtProps" und "moves", jeweils mit Unterpunkten. Klicken Sie auf playerItems und Spalte 2 ist nicht gefüllt, da selection.GetSelected nichts zurückgibt. Klicken Sie auf "courtProps" und Spalte 2 wird basierend auf "playerItems" gefüllt, weil GetSelected courtProps zurückgibt. Klicken Sie auf "bewegt", GetSelected gibt "courtProps" zurück. Ich brauche Code, der ausgeführt wird, wo GetSelected zurückgibt, was die Auswahl sein wird, nicht was sich ändert. – Dalanchoo