using DbTools; using System; using System.Collections.Generic; using System.Data; using System.Data.SQLite; using System.IO; using System.Linq; namespace DbToolsTester.Forms { public partial class TableChooserForm : DevExpress.XtraEditors.XtraForm { List TreeItems = new List(); public string SelectedTable { get; private set; } public string SelectedDatabase { get; private set; } public TableChooserForm() { InitializeComponent(); } private int AddTreeItem(string text, int parentId = 0) { TreeItems.Add(new TreeItem(text, TreeItems.Count + 1, parentId)); return TreeItems.Count; } private void TableChooserForm_Load(object sender, EventArgs e) { SqlBuilder builder = new SqlBuilder(); int db1 = AddTreeItem(Path.GetFileName(MainForm.Instance.Database1File)); int db2 = AddTreeItem(Path.GetFileName(MainForm.Instance.Database2File)); using (SQLiteConnection cn = new SQLiteConnection("Data Source=" + MainForm.Instance.Database1File + "; Version=3;")) { string[] tables = builder.GetTableNames(cn).OrderBy(f => f).ToArray(); foreach (string table in tables) { AddTreeItem(table, db1); } } using (SQLiteConnection cn = new SQLiteConnection("Data Source=" + MainForm.Instance.Database2File + "; Version=3;")) { string[] tables = builder.GetTableNames(cn).OrderBy(f => f).ToArray(); foreach (string table in tables) { AddTreeItem(table, db2); } } treeList1.DataSource = TreeItems; treeList1.ExpandAll(); } private void treeList1_FocusedNodeChanged(object sender, DevExpress.XtraTreeList.FocusedNodeChangedEventArgs e) { if (e.Node == null || e.Node.ParentNode == null) { SelectedTable = null; SelectedDatabase = null; return; } SelectedDatabase = e.Node.ParentNode.GetValue(0).ToString(); SelectedTable = e.Node.GetValue(0).ToString(); } } internal class TreeItem { public int ID { get; set; } public int ParentID { get; set; } public string Text { get; set; } public TreeItem() { } public TreeItem(string text, int id, int parentId = 0) { ID = id; ParentID = parentId; Text = text; } } }