replaced event TreeView.CursorChanged by TreeView.Selection.Changed

reason is:

The event TreeView.CursorChanged will fire after the selection has changed. However, when you are treating that event in a multi-selectable treeview, function TreeView.Selection.GetSelectedRows() will return a list with 1 element missing in it, the one that just has been selected. Using event TreeView.Selection.Changed instead will not have that problem. Unfortunately, the latter cannot be accessed in the Xamarin designer, so has to be hand-coded in the constructor after the .Build() call.

http://ntswiki.nts.neusoft.local/wiki/Known_GTKSharp_Issues#TreeView.CursorChanged_vs._TreeView.Selection.Changed