FreeSql.Tools.WinForm
Form1.cs
using DevComponents.AdvTree;
using DevComponents.DotNetBar;
using DevComponents.DotNetBar.Controls;
using FreeSqlTools.Component;
using System;
using System.Collections.Generic;
using System.Data;
using System.Diagnostics;
using System.Drawing;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace FreeSqlTools
{
public partial clast Form1 : RibbonForm
{
static FrmLoading frmLoading;
public Form1()
{
this.EnableGlast = false;
InitializeComponent();
this.Load += Form1_Load;
this.FormClosing += Form1_FormClosing;
}
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
this.Hide();
var process = Process.GetCurrentProcess();
process.Kill();
}
private void Form1_Load(object sender, EventArgs e)
{
Task.Run(() => LoadDataTreeList());
// DesktopAlert.Show("发现新版本", "\uf005", eSymbolSet.Awesome, Color.Empty, eDesktopAlertColor.DarkRed, eAlertPosition.BottomRight, 5, 0, (x) => { });
this.WindowState = FormWindowState.Maximized;
}
private void advTree1_NodeDoubleClick(object sender, TreeNodeMouseEventArgs e)
{
if (e.Node.Level == 0 || e.Node.Level > 2) return;
LoadDataInfo(e.Node);
}
private void Command_createDataConnection_Executed(object sender, EventArgs e)
{
var frm = new FrmCreateDataConnection();
var frmResult = frm.ShowDialog();
if (frmResult == DialogResult.OK)
LoadDataTreeList();
}
private void buttonItem16_Click(object sender, EventArgs e)
{
Task.Run(() => LoadDataTreeList());
}
void LoadDataTreeList()
{
DataBaseInfo baseInfo = new DataBaseInfo();
advTree1.Nodes[0].Nodes.Clear();
List nodes = new List();
foreach (var m in baseInfo.GetDataBaseInfos())
{
//var connectionString = m.IsString ? m.ConnectionString
// : G.GetConnectionString(m.DataType, m.UserId, m.Pwd, m.Host, m.DbName,
// m.Port, m.ValidatorType);
var node = new Node($"{m.Name}({m.DataType.ToString()})")
{
Image = Properties.Resources.monitor,
Name = m.Id.ToString(),
Tag = m,
//TagString = connectionString,
DataKey = $"{m.DataType.ToString()}_{m.Id.ToString("N")}"
};
node.ContextMenu = buttonItem21;
G.AddFreeSql(node.DataKey,m);
nodes.Add(node);
}
advTree1.Nodes[0].Nodes.AddRange(nodes.ToArray());
}
private void buttonItem17_Click(object sender, EventArgs e)
{
EditTemplates(true);
}
private void superTabControl1_TabItemClose(object sender, SuperTabStripTabItemCloseEventArgs e)
{
if (e.Tab.Text == "首页")
{
e.Cancel = true;
ToastNotification.ToastBackColor = Color.Red;
ToastNotification.ToastForeColor = Color.White;
ToastNotification.ToastFont = new Font("微软雅黑", 15);
ToastNotification.Show(superTabControl1, "默认页不允许关闭", null, 3000, eToastGlowColor.Red, eToastPosition.TopCenter);
}
if (pairs.ContainsKey(e.Tab.Text)) pairs.Remove(e.Tab.Text);
if (pairs.Count == 0) buttonItem19.Enabled = false;
}
private void buttonItem18_Click(object sender, EventArgs e)
{
EditTemplates(false);
}
Dictionary pairs
= new Dictionary();
void EditTemplates(bool replaced)
{
string path = string.Empty;
var form = new FrmRazorTemplates(replaced);
if (form.ShowDialog() == DialogResult.OK)
{
if (pairs.ContainsKey(form.TemplatesName))
{
var item = superTabControl1.Tabs.Cast()
.Where(a => a.Text == form.TemplatesName).FirstOrDefault();
superTabControl1.SelectedTab = item;
return;
}
var superItem = superTabControl1.CreateTab(form.TemplatesName);
var ucEditor = new UCEditor(form.TemplatesPath);
pairs.Add(form.TemplatesName, ucEditor);
superTabControl1.SelectedTab = superItem;
ucEditor.Dock = DockStyle.Fill;
superTabControl1.SelectedPanel.Controls.Add(ucEditor);
}
}
async void LoadDataInfo(Node node)
{
ThreadPool.QueueUserWorkItem(new WaitCallback(a =>
{
frmLoading = new FrmLoading();
frmLoading.ShowDialog();
}));
var res = await Task.Run(() =>
{
if (node.Level == 1)
{
if (node.Nodes.Count >= 1) return 0;
node.Nodes.Clear();
var list = G.GetDatabases(node.DataKey, node.TagString);
var nodes = list.Select(a => new Node(a)
{
Image = Properties.Resources._base,
DataKey = node.DataKey,
ContextMenu = buttonItem22
}).ToArray();
node.Nodes.AddRange(nodes);
}
else if (node.Level == 2)
{
node.Nodes.Clear();
Task.Delay(1000);
var list = G.GetTablesByDatabase(node.DataKey, node.Text);
var nodes = list.Select(a => new Node(a.Name)
{
Image = Properties.Resources.application,
// CheckBoxVisible = true,
// CheckBoxStyle = DevComponents.DotNetBar.eCheckBoxStyle.CheckBox,
// CheckState = CheckState.Unchecked,
Tag = a,
DataKey = node.DataKey,
ContextMenu = buttonItem23
}).ToArray();
node.Nodes.AddRange(nodes);
}
return 0;
});
node.Expanded = true;
this.Invoke((Action)delegate () { Thread.CurrentThread.Join(500); frmLoading.Close(); });
}
///
/// 连接
///
///
///
private void buttonItem26_Click(object sender, EventArgs e)
{
var node = advTree1.SelectedNode;
node.Nodes.Clear();
LoadDataInfo(node);
}
///
/// 打开数据库
///
///
///
private void buttonItem33_Click(object sender, EventArgs e)
{
var node = advTree1.SelectedNode;
node.Nodes.Clear();
LoadDataInfo(node);
}
///
/// 关闭数据库连接
///
///
///
private void buttonItem27_Click(object sender, EventArgs e)
{
var node = advTree1.SelectedNode;
node.Nodes.Clear();
}
///
/// 添加
///
///
///
private void buttonItem25_Click(object sender, EventArgs e)
{
var frm = new FrmCreateDataConnection();
var frmResult = frm.ShowDialog();
if (frmResult == DialogResult.OK)
LoadDataTreeList();
}
///
/// 刷新库
///
///
///
private void buttonItem31_Click(object sender, EventArgs e)
{
var node = advTree1.SelectedNode;
node.Nodes.Clear();
LoadDataInfo(node);
}
///
///
///
///
///
private void buttonItem29_Click(object sender, EventArgs e)
{
var node = advTree1.SelectedNode;
if (node != null && node.Level == 1)
{
if (MessageBoxEx.Show("是否删除当前选中服务器", "删除提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning) == DialogResult.Yes)
{
node.Nodes.Clear();
DataBaseInfo baseInfo = new DataBaseInfo();
baseInfo.Delete(Guid.Parse(node.Name));
advTree1.Nodes[0].Nodes.Remove(node);
}
}
else
{
MessageBoxEx.Show("删除节点无效", "删除提示", MessageBoxButtons.YesNo, MessageBoxIcon.Error);
}
}
///
/// 批量生成
///
///
///
private void command_batch_Executed(object sender, EventArgs e)
{
var node = advTree1.SelectedNode;
var frm = new FrmBatch(node);
frm.ShowDialog();
}
private void buttonItem34_Click(object sender, EventArgs e)
{
Process.Start(@"https://github.com/2881099/FreeSql/issues/new");
}
private void buttonItem35_Click(object sender, EventArgs e)
{
Process.Start(@"https://github.com/2881099/FreeSql");
}
private void buttonItem36_Click(object sender, EventArgs e)
{
Process.Start(@"https://github.com/2881099/FreeSql/wiki");
}
private void superTabControl1_SelectedTabChanged(object sender, SuperTabStripSelectedTabChangedEventArgs e)
{
buttonItem19.Enabled = false;
var superTab = superTabControl1.SelectedTab;
if (pairs.TryGetValue(superTab.Text, out UCEditor uCEditor))
{
buttonItem19.Command = uCEditor.command_save;
buttonItem19.Enabled = true;
}
}
private void buttonItem32_Click(object sender, EventArgs e)
{
var node = advTree1.SelectedNode;
var superItem = superTabControl1.CreateTab($"({node.Parent.Text })-{node.Text}");
var ucEditor = new UCGeneratedCode(node);
superTabControl1.SelectedTab = superItem;
ucEditor.Dock = DockStyle.Fill;
superTabControl1.SelectedPanel.Controls.Add(ucEditor);
}
private void buttonItem28_Click(object sender, EventArgs e)
{
var node = advTree1.SelectedNode;
var superItem = superTabControl1.CreateTab($"({node.Parent.Text })-{node.Text} 查询");
var ucEditor = new UCDataGrid(node);
superTabControl1.SelectedTab = superItem;
ucEditor.Dock = DockStyle.Fill;
superTabControl1.SelectedPanel.Controls.Add(ucEditor);
}
}
}