Как перенести выбранную строку из TreeView в другой TreeView?GTK # - PullRequest
0 голосов
/ 23 мая 2018

Как я могу перевести selected rows с Treeview на другой Treeview, когда я нажимаю Button?

Я пытался создать ListStore с выбором treeview1 и передам treeview2 как TreeModel, но у меня ничего не получилось.

ОБНОВЛЕНИЕ: Я нашел способ, используя OnTreeservicesRowActivated OnTreeservicesRowActivation для события (все еще можно сделать с помощью кнопки) и код ниже.Он «смешивает» строки, если я нажимаю слишком быстро, но это немного раздражает.Спасибо за ответы

using System;
using Gtk;
using MySql.Data.MySqlClient;

namespace Proyect
{
   public partial class Window : Gtk.Window
{
       public Window() :
            base(Gtk.WindowType.Toplevel)
        {
            this.Build();
            //Adds columns to TreeViews
            CreateTreeView(treeservices,tree2);
            treeservices.Selection.Mode = SelectionMode.Single;
        }

//List to populate tree2.
ListStore tree2list = new ListStore(typeof(string), typeof(string), typeof(string));

//Class for validating entry's and misc.
    Validation val = new Validation();

//MySql connection
    MySqlConnection c = new MySqlConnection(//connectionstring)
    MySqlDataReader dr;
    MySqlCommand cmd;

    //CellRendererText for treeservices.
    CellRendererText cellserv1 = new CellRendererText();
    CellRendererText cellserv2 = new CellRendererText();
    CellRendererText cellserv3 = new CellRendererText();


    void CreateTreeView(TreeView treeservices, TreeView tree2 )
    {
        treeservices.AppendColumn("Code", cellserv1, "text", 0);
        treeservices.AppendColumn("Name", cellserv2, "text", 1);
        treeservices.AppendColumn("Price", cellserv3, "text", 2);
        treeservices.Model = Services();

        tree2.AppendColumn("Code", new CellRendererText(), "text", 0);
        tree2.AppendColumn("Name", new CellRendererText(), "text", 1);
        tree2.AppendColumn("Price", new CellRendererText(), "text", 2);
    }


    ListStore Services()
    {
        //Returns a ListStore from local MySql Database
    }

//Adds a service to tree2 when a row is double clicked
    protected void OnTreeservicesRowActivated(object o, RowActivatedArgs args)
    {   
        tree2list.AppendValues(cellserv1.Text, cellserv2.Text, cellserv3.Text);
        tree2.Model = tree2list;
    }
}

1 Ответ

0 голосов
/ 23 мая 2018

Добавить событие Afterselect для вашего объекта в виде дерева

    private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
    {
      //Set TreeNode variable to the selected node
      TreeNode Nodetosave = this.treeView1.SelectedNode;
      //Add Nodetosave to your second tree in your button event
    }

Это мой первый в истории ответ на стеке, пожалуйста, извините, если я пропустил какое-либо форматирование.Если вы хотите сохранить несколько TreeNodes, то составьте список TreeNodes и добавьте каждый выбранный триод, затем итерируйте их в событии кнопки и добавьте их один за другим в другое дерево.

...