using Community.VisualStudio.Toolkit; using System; using System.Collections.Generic; using System.Drawing; using System.Runtime.InteropServices; using System.Windows.Forms; using VberAdmin.Models; namespace VberAdmin.WinForm { public delegate void GeneratorCodeStart(); public partial class VberForm : Form { public event GeneratorCodeStart OnGeneratorCodeStart; public VberForm() { InitializeComponent(); } public VberForm(TemplateViewModel viewModel) { InitializeComponent(); ViewModel = viewModel; _parentPath = tPathParent.Text; } [DllImport("user32.dll")] public static extern bool ReleaseCapture(); [DllImport("user32.dll")] public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam); private const int VmNclbuttondown = 0XA1;//定义鼠标左键按下 private const int Htcaption = 2; public void SetVersion(string version, Color bg) { lab_version.Text = version; pHeader.BackColor = bg; pFooter.BackColor = bg; } /// /// 鼠标按下 /// /// /// private void Title_MouseDown(object sender, MouseEventArgs e) { //为当前应用程序释放鼠标捕获 ReleaseCapture(); //发送消息 让系统误以为在标题栏上按下鼠标 SendMessage(Handle, VmNclbuttondown, Htcaption, 0); } public TemplateViewModel ViewModel { get; set; } private readonly string _parentPath; private void Form_Load(object sender, EventArgs e) { try { tFileName.Text = ViewModel.BaseFolder; tExtFilePath.Text = ViewModel.FileName; tPathDto.Text = ViewModel.DtoFolder; tPathService.Text = ViewModel.ServiceFolder; tPathController.Text = ViewModel.ControllerFolder; tPathView.Text = ViewModel.ViewsFolder; tProjectName.Text = ViewModel.ProjectName; tClassName.Text = ViewModel.ClassName; tPageTitle.Text = ViewModel.HtmlPageTitle; tModalTitle.Text = ViewModel.HtmlModalTitle; var columnList = new List { new ColumnViewModel { ColumnName = "Id", Comment = "Id" } }; columnList.AddRange(ViewModel.Columns ?? new List()); columnList.Add(new ColumnViewModel { ColumnName = "", Comment = "" }); cPrimarykey.DataSource = columnList; cPrimarykey.SelectedIndex = 0; //tPathParent.Text = ViewModel.ParentPath; dgvColumns.DataSource = ViewModel.Columns; } catch (Exception ex) { VS.MessageBox.ShowError($@"系统出错![{ex.Message}]"); } } private void btnStart_Click(object sender, EventArgs e) { try { ViewModel.ProjectName = tProjectName.Text; ViewModel.ClassName = tClassName.Text; ViewModel.HtmlPageTitle = tPageTitle.Text; ViewModel.HtmlModalTitle = tModalTitle.Text; ViewModel.ColumnPrimaryKey = cPrimarykey.SelectedValue.ToString(); ViewModel.ParentPath = tPathParent.Text == _parentPath ? "" : tPathParent.Text; ViewModel.ExtFilePath = tExtFilePath.Text; //ViewModel.DtoFolder = tPathDto.Text ;//== ViewModel.DtoFolder ? "" : tPathDto.Text; //ViewModel.ServiceFolder = tPathService.Text;// == ViewModel.ServiceFolder ? "" : tPathService.Text; ViewModel.ControllerFolder = tPathController.Text; ViewModel.ViewsFolder = tPathView.Text; ViewModel.Columns = (List)dgvColumns.DataSource; ViewModel.IsCreateDto = cCreateDto.Checked; ViewModel.IsUpdateDto = cUpdateDto.Checked; ViewModel.IsListDto = cListDto.Checked; ViewModel.IsApplicationService = cService.Checked; ViewModel.IsIApplicationService = cServiceInterface.Checked; ViewModel.IsController = cController.Checked; ViewModel.IsView = cView.Checked; ViewModel.IsReplace = cReplace.Checked; ViewModel.IsMultipleSearch = cMulitSearch.Checked; DialogResult = DialogResult.OK; OnGeneratorCodeStart?.Invoke(); } catch (Exception ex) { VS.MessageBox.ShowError($@"系统出错![{ex.Message}]"); } } private void btnClose_Click(object sender, EventArgs e) { DialogResult = DialogResult.Cancel; Close(); } #region tPathParent private void tPathParent_KeyPress(object sender, KeyPressEventArgs e) { e.Handled = e.KeyChar != '\b' && (e.KeyChar > '9' || e.KeyChar < '0') && (e.KeyChar > 'Z' || e.KeyChar < 'A') && (e.KeyChar > 'z' || e.KeyChar < 'a'); } private void tPathParent_GotFocus(object sender, EventArgs e) { if (tPathParent.Text == _parentPath) tPathParent.Text = ""; } private void tPathParent_LostFocus(object sender, EventArgs e) { if (tPathParent.Text == "") tPathParent.Text = _parentPath; } #endregion tPathParent private void tExtFilePath_TextChanged(object sender, EventArgs e) { ViewModel.ExtFilePath = tExtFilePath.Text; tPathDto.Text = ViewModel.DtoFolder; tPathService.Text = ViewModel.ServiceFolder; } } }