C# 如何将选定行从一个树视图转移到另一个树视图?GTK#
单击C# 如何将选定行从一个树视图转移到另一个树视图?GTK#,c#,mono,monodevelop,gtk#,gtktreeview,C#,Mono,Monodevelop,Gtk#,Gtktreeview,单击按钮时,如何将所选行从树视图转移到另一个树视图 我一直在尝试使用treeview1的选择创建一个ListStore,并将其作为TreeModel提供给treeview2,但我没有成功 更新:我找到了一种方法,通过使用OnTreeservicesRowActivatedOnTreeservicesRowActivated事件(仍然可以通过按钮来完成)和下面的代码。如果我点击太快,它会“混合”行,但这是一个小麻烦。谢谢你的回答 using System; using Gtk; using MyS
按钮时,如何将所选行
从树视图
转移到另一个树视图
我一直在尝试使用treeview1
的选择创建一个ListStore
,并将其作为TreeModel
提供给treeview2
,但我没有成功
更新:我找到了一种方法,通过使用OnTreeservicesRowActivated
OnTreeservicesRowActivated事件(仍然可以通过按钮来完成)和下面的代码。如果我点击太快,它会“混合”行,但这是一个小麻烦。谢谢你的回答
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;
}
}
在treeview对象上添加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
}
这是我第一次回答,如果我错过了任何格式化,请原谅。如果要存储多个树节点,请列出树节点列表并添加每个选定的树节点,然后在按钮事件中迭代这些树节点,并将它们逐个添加到另一个树中。您可以提供代码示例吗?谢谢您的回答,很遗憾,由于我没有使用Windows.Forms,因此无法使用。