From 6ceb7692f37c6d513dbcba2b6d39d85c0fc1eedf Mon Sep 17 00:00:00 2001
From: lu <99954486@qq.com>
Date: 星期四, 06 三月 2025 09:08:39 +0800
Subject: [PATCH] 委外版面
---
DevApp/Gs.DevApp/ToolBox/DragResizeHelp.cs | 361 ++++++++++++++++++++++++++++++++++++---------------
1 files changed, 252 insertions(+), 109 deletions(-)
diff --git a/DevApp/Gs.DevApp/ToolBox/DragResizeHelp.cs b/DevApp/Gs.DevApp/ToolBox/DragResizeHelp.cs
index a7a52f2..a2f3b9b 100644
--- a/DevApp/Gs.DevApp/ToolBox/DragResizeHelp.cs
+++ b/DevApp/Gs.DevApp/ToolBox/DragResizeHelp.cs
@@ -1,4 +1,5 @@
-锘縰sing System;
+锘縰sing DevExpress.XtraBars.Docking;
+using System;
using System.Drawing;
using System.Windows.Forms;
@@ -7,18 +8,21 @@
public class DragResizeHelp
{
#region Field
- private static bool isDragging = false;
+ private bool isDragging = false;
private const int Band = 5;
- private const int MinWidth = 10;
- private const int MinHeight = 10;
- private static EnumMousePointPosition m_MousePointPosition;
- private static Point p, p1;
- private static Label sbMsg;
- private static Control dragBox1;
- private static string dragCurrent_Name = "";
- private static DevExpress.XtraBars.Docking.ControlContainer dockPanel1_Container;
+ private const int MinWidth = 50;
+ private const int MinHeight = 30;
+ private EnumMousePointPosition m_MousePointPosition;
+ private Point p, p1;
+ private Control dragBox1;//瀹瑰櫒1
+ private string dragBoxCurrentName = "";//褰撳墠瀹瑰櫒鐨勫悕绉�
+ private Control ctrlCurrentObj;//褰撳墠鎷栨嫋鍔ㄧ殑瀵瑰儚
+ private DevExpress.XtraBars.Docking.DockManager dockManager1;
+ private DevExpress.XtraBars.Docking.DockPanel dockPanel1;
+ private DevExpress.XtraBars.Docking.ControlContainer dockPanel1_Container;
+ private System.ComponentModel.IContainer components = null;
+ //private ToolTip toolTip;
#endregion
-
#region Inner Object
private enum EnumMousePointPosition
{
@@ -34,98 +38,202 @@
MouseDrag = 9 // '榧犳爣鎷栧姩
}
#endregion
-
- #region Constructor
- public DragResizeHelp()
+ public DragResizeHelp(DevExpress.XtraEditors.XtraForm frm, Control regBox)
{
- // Nothing to do.
- }
- #endregion
- private static void InitializeComponent(DevExpress.XtraEditors.XtraForm frm)
- {
- DevExpress.XtraBars.Docking.DockManager dockManager1;
- DevExpress.XtraBars.Docking.DockPanel dragBox2_Container;
- dockManager1 = new DevExpress.XtraBars.Docking.DockManager();
- dragBox2_Container = new DevExpress.XtraBars.Docking.DockPanel();
- dockPanel1_Container = new DevExpress.XtraBars.Docking.ControlContainer();
- ((System.ComponentModel.ISupportInitialize)(dockManager1)).BeginInit();
+ // toolTip = new ToolTip();
+ this.components = new System.ComponentModel.Container();
+ dragBox1 = regBox;
+ this.components = new System.ComponentModel.Container();
+ this.dockManager1 = new DevExpress.XtraBars.Docking.DockManager(this.components);
+ dockManager1.BeginUpdate();
+ this.dockPanel1 = new DevExpress.XtraBars.Docking.DockPanel();
+ this.dockPanel1_Container = new DevExpress.XtraBars.Docking.ControlContainer();
+ ((System.ComponentModel.ISupportInitialize)(this.dockManager1)).BeginInit();
+ this.dockPanel1.SuspendLayout();
+ frm.SuspendLayout();
//
// dockManager1
//
- dockManager1.Form = frm;
- dockManager1.RootPanels.AddRange(new DevExpress.XtraBars.Docking.DockPanel[] {
- dragBox2_Container});
+ this.dockManager1.Form = frm;
+ this.dockManager1.RootPanels.AddRange(new DevExpress.XtraBars.Docking.DockPanel[] {
+ this.dockPanel1});
+ this.dockManager1.TopZIndexControls.AddRange(new string[] {
+ "DevExpress.XtraBars.BarDockControl",
+ "DevExpress.XtraBars.StandaloneBarDockControl",
+ "System.Windows.Forms.MenuStrip",
+ "System.Windows.Forms.StatusStrip",
+ "System.Windows.Forms.StatusBar",
+ "DevExpress.XtraBars.Ribbon.RibbonStatusBar",
+ "DevExpress.XtraBars.Ribbon.RibbonControl",
+ "DevExpress.XtraBars.Navigation.OfficeNavigationBar",
+ "DevExpress.XtraBars.Navigation.TileNavPane",
+ "DevExpress.XtraBars.TabFormControl",
+ "DevExpress.XtraBars.FluentDesignSystem.FluentDesignFormControl",
+ "DevExpress.XtraBars.ToolbarForm.ToolbarFormControl"});
//
// dockPanel1
//
- dragBox2_Container.Controls.Add(dockPanel1_Container);
- dragBox2_Container.Dock = DevExpress.XtraBars.Docking.DockingStyle.Float;
- dragBox2_Container.FloatLocation = new System.Drawing.Point(691, 455);
- dragBox2_Container.ID = new System.Guid("319a7cf1-f26d-4049-8a96-8f9fbbd13cd2");
- dragBox2_Container.Location = new System.Drawing.Point(0, 0);
- dragBox2_Container.Name = "dockPanel1";
- dragBox2_Container.OriginalSize = new System.Drawing.Size(200, 200);
- dragBox2_Container.Size = new System.Drawing.Size(200, 200);
- dragBox2_Container.Text = "dockPanel1";
- dragBox2_Container.Options.AllowDockBottom = false;
- dragBox2_Container.Options.AllowDockFill = false;
- dragBox2_Container.Options.AllowDockLeft = false;
- dragBox2_Container.Options.AllowDockRight = false;
- dragBox2_Container.Options.AllowDockTop = false;
- dragBox2_Container.Options.ShowMaximizeButton = false;
- dragBox2_Container.Options.ShowMaximizeButton = false;
+ this.dockPanel1.Controls.Add(this.dockPanel1_Container);
+ this.dockPanel1.Dock = DevExpress.XtraBars.Docking.DockingStyle.Float;
+ this.dockPanel1.FloatLocation = new System.Drawing.Point(1617, 547);
+ this.dockPanel1.FloatSize = new System.Drawing.Size(306, 459);
+ this.dockPanel1.ID = new System.Guid("7148938b-5fd8-4833-9a9f-445a728a11cf");
+ this.dockPanel1.Location = new System.Drawing.Point(0, 0);
+ this.dockPanel1.Name = "dockPanel1";
+ this.dockPanel1.OriginalSize = new System.Drawing.Size(200, 200);
+ this.dockPanel1.Size = new System.Drawing.Size(306, 459);
+ this.dockPanel1.Text = "缁勪欢绠�";
+ dockPanel1.Options.AllowDockBottom = false;
+ dockPanel1.Options.AllowDockFill = false;
+ dockPanel1.Options.AllowDockLeft = false;
+ dockPanel1.Options.AllowDockRight = false;
+ dockPanel1.Options.AllowDockTop = false;
+ dockPanel1.Options.ShowMaximizeButton = false;
+ dockPanel1.Options.ShowMaximizeButton = false;
//
// dockPanel1_Container
//
- dockPanel1_Container.Location = new System.Drawing.Point(5, 32);
- dockPanel1_Container.Name = "dockPanel1_Container";
- dockPanel1_Container.Size = new System.Drawing.Size(190, 164);
- dockPanel1_Container.TabIndex = 0;
+ this.dockPanel1_Container.Location = new System.Drawing.Point(5, 32);
+ this.dockPanel1_Container.Name = "dockPanel1_Container";
+ this.dockPanel1_Container.Size = new System.Drawing.Size(296, 423);
+ this.dockPanel1_Container.TabIndex = 0;
+ this.dockPanel1_Container.BorderStyle = System.Windows.Forms.BorderStyle.None;
//
- // XtraForm3
+ // XtraForm1
//
- ((System.ComponentModel.ISupportInitialize)(dockManager1)).EndInit();
- dragBox2_Container.ResumeLayout(false);
- frm.ResumeLayout(false);
- dragBox2_Container.Show();
- }
- #region Public Method
- public static void RegisterControl(DevExpress.XtraEditors.XtraForm frm, Control control, Control box1, Label lbMsg)
- {
- InitializeComponent(frm);
- if (control != null)
- {
- sbMsg = lbMsg;
- dragBox1 = box1;
- dragCurrent_Name = box1.Name;
- control.MouseDown += new MouseEventHandler(control_MouseDown);
- control.MouseLeave += new EventHandler(control_MouseLeave);
- control.MouseMove += new MouseEventHandler(control_MouseMove);
- control.Resize += myPanel_Resize;
- }
- }
+ frm.AutoScaleDimensions = new System.Drawing.SizeF(8F, 18F);
+ frm.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
+ frm.ClientSize = new System.Drawing.Size(1057, 660);
- public static void UnRegisterControl(Control control)
+ ((System.ComponentModel.ISupportInitialize)(this.dockManager1)).EndInit();
+ this.dockPanel1.ResumeLayout(false);
+ frm.ResumeLayout(false);
+ dockManager1.EndUpdate();
+
+ this.dockPanel1.Hide();
+
+ dockPanel1.ClosedPanel += (s, e) =>
+ {
+ foreach (Control control in dragBox1.Controls)
+ {
+ if (control != null)
+ {
+ control.MouseDown -= new MouseEventHandler(control_MouseDown);
+ control.MouseLeave -= new EventHandler(control_MouseLeave);
+ control.MouseMove -= new MouseEventHandler(control_MouseMove);
+ control.MouseUp -= Control_MouseUp;
+ control.Resize -= myPanel_Resize;
+ }
+ }
+ };
+ }
+ public void Show()
+ {
+ if (dockPanel1.Visibility == DockVisibility.Visible)
+ return;
+ foreach (Control control in dragBox1.Controls)
+ {
+ if (control != null)
+ {
+ dragBoxCurrentName = dragBox1.Name;
+ control.MouseDown += new MouseEventHandler(control_MouseDown);
+ control.MouseLeave += new EventHandler(control_MouseLeave);
+ control.MouseMove += new MouseEventHandler(control_MouseMove);
+ control.MouseUp += Control_MouseUp;
+ control.Resize += myPanel_Resize;
+ control.ContextMenuStrip = new ContextMenuStrip();
+
+ }
+ }
+ dockPanel1.Show();
+ isDragging = true;
+
+ }
+ public void Hide(Control control)
{
if (control != null)
{
control.MouseDown -= new MouseEventHandler(control_MouseDown);
control.MouseLeave -= new EventHandler(control_MouseLeave);
control.MouseMove -= new MouseEventHandler(control_MouseMove);
+ control.MouseUp -= Control_MouseUp;
+ control.Resize -= myPanel_Resize;
}
+ dockPanel1.Hide();
+ isDragging = false;
}
- #endregion
- private static void control_MouseDown(object sender, MouseEventArgs e)
+ #region Public Method
+ private void Control_MouseUp(object sender, MouseEventArgs e)
+ {
+ Control lCtrl = (sender as Control);
+ ctrlCurrentObj = lCtrl;
+ (sender as Control).Refresh();
+ dragBoxCurrentName = (sender as Control).Parent.Name;
+ if (dragBox1.Name == dragBoxCurrentName)
+ {
+ if (IsOutsideBounds(lCtrl, dragBox1))
+ {
+ dragBox1.Controls.Remove(lCtrl);
+ dockPanel1_Container.Controls.Add(lCtrl);
+ lCtrl.Left = 0;
+ lCtrl.Top = 10;
+ // isDragging = false;
+ dragBoxCurrentName = dockPanel1_Container.Name;
+ }
+ // reloadLoaction(null);
+ }
+ else if (dockPanel1_Container.Name == dragBoxCurrentName)
+ {
+ if (IsOutsideBounds(lCtrl, dockPanel1_Container))
+ {
+ dockPanel1_Container.Controls.Remove(lCtrl);
+ dragBox1.Controls.Add(lCtrl);
+ lCtrl.Left = 0;
+ lCtrl.Top = 10;
+ // isDragging = false;
+ dragBoxCurrentName = dragBox1.Name;
+ }
+ reloadLoaction(lCtrl);
+ }
+
+ }
+ private void control_MouseDown(object sender, MouseEventArgs e)
{
p.X = e.X;
p.Y = e.Y;
p1.X = e.X;
p1.Y = e.Y;
isDragging = true;
- dragCurrent_Name = (sender as Control).Parent.Name;
- }
+ dragBoxCurrentName = (sender as Control).Parent.Name;
+ ctrlCurrentObj = (sender as Control);
- private static void myPanel_Resize(object sender, EventArgs e)
+ if (e.Button == MouseButtons.Right)
+ {
+ Control control = (sender as Control);
+ var menu = control.ContextMenuStrip;
+ menu.Items.Clear();
+ SetDrag frm = new SetDrag();
+ menu.Items.Add($"璁剧疆鍧愭爣", null, (ss, ee) =>
+ {
+ frm.ShowDialog();
+ });
+ menu.Items.Add($"璁剧疆澶у皬", null, (ss, ee) =>
+ {
+ frm.ShowDialog();
+ });
+ menu.Items.Add($"楂樼骇璁剧疆", null, (ss, ee) =>
+ {
+ frm.ShowDialog();
+ });
+ menu.Items.Add($"涓�閿噸鎺�", null, (ss, ee) =>
+ {
+ reloadLoaction((sender as Control).Parent);
+ });
+ menu.Show(control, e.Location);
+ }
+
+ }
+ private void myPanel_Resize(object sender, EventArgs e)
{
Control panel = sender as Control;
if (panel != null && panel.Controls.Count > 0)
@@ -137,19 +245,21 @@
int newY = (panel.ClientSize.Height - childControl.Height) / 2;
childControl.Location = new Point(childControl.Location.X, newY);
}
-
}
+ reloadMsg(panel);
}
- private static void control_MouseLeave(object sender, EventArgs e)
+ private void control_MouseLeave(object sender, EventArgs e)
{
m_MousePointPosition = EnumMousePointPosition.MouseSizeNone;
Control control = sender as Control;
control.Cursor = Cursors.Arrow;
+ ctrlCurrentObj = control;
}
- private static void control_MouseMove(object sender, MouseEventArgs e)
+ private void control_MouseMove(object sender, MouseEventArgs e)
{
if (!isDragging) { return; }
Control lCtrl = (sender as Control);
+ ctrlCurrentObj = lCtrl;
if (e.Button == MouseButtons.Left)
{
switch (m_MousePointPosition)
@@ -170,7 +280,7 @@
p1.Y = e.Y; //'璁板綍鍏夋爣鎷栧姩鐨勫綋鍓嶇偣
break;
case EnumMousePointPosition.MouseSizeRight:
- lCtrl.Width = lCtrl.Width + e.X - p1.X; //
+ lCtrl.Width = lCtrl.Width + e.X - p1.X;
lCtrl.Height = lCtrl.Height + e.Y - p1.Y;
p1.X = e.X;
p1.Y = e.Y; //'璁板綍鍏夋爣鎷栧姩鐨勫綋鍓嶇偣
@@ -249,37 +359,21 @@
default:
break;
}
- }
-
- if (dragBox1.Name == dragCurrent_Name)
- {
- if (IsOutsideBounds(lCtrl, dragBox1))
- {
- dragBox1.Controls.Remove(lCtrl);
- dockPanel1_Container.Controls.Add(lCtrl);
- lCtrl.Left = 0;
- lCtrl.Top = 10;
- isDragging = false;
- dragCurrent_Name = dockPanel1_Container.Name;
- }
+ control.Refresh();
+ Graphics g = control.CreateGraphics();
+ int width = control.Width;
+ int height = control.Height;
+ Point[] ps = { new Point(0, 0),new Point(width - 1, 0),
+ new Point(width - 1, height - 1),new Point(0, height - 1),new Point(0, 0) };
+ g.DrawLines(new Pen(Color.Pink), ps);
}
- else if (dockPanel1_Container.Name == dragCurrent_Name)
- {
- if (IsOutsideBounds(lCtrl, dockPanel1_Container))
- {
- dockPanel1_Container.Controls.Remove(lCtrl);
- dragBox1.Controls.Add(lCtrl);
- lCtrl.Left = 0;
- lCtrl.Top = 10;
- isDragging = false;
- dragCurrent_Name = dragBox1.Name;
- }
- }
- sbMsg.Text = lCtrl.Location.ToString() + "瀹瑰櫒锛�" + dragCurrent_Name;
-
+ // reloadLoaction();
+ reloadMsg(lCtrl);
+
+
}
- private static EnumMousePointPosition MousePointPosition(Size size, System.Windows.Forms.MouseEventArgs e)
+ private EnumMousePointPosition MousePointPosition(Size size, System.Windows.Forms.MouseEventArgs e)
{
if ((e.X >= -1 * Band) | (e.X <= size.Width) | (e.Y >= -1 * Band) | (e.Y <= size.Height))
{
@@ -346,8 +440,7 @@
return EnumMousePointPosition.MouseSizeNone;
}
}
-
- public static bool IsOutsideBounds(Control childControl, Control parentControl)
+ public bool IsOutsideBounds(Control childControl, Control parentControl)
{
if (parentControl == null) return true;
if (parentControl == null) return true;
@@ -378,5 +471,55 @@
// 濡傛灉瀛愭帶浠剁殑鎵�鏈夎竟鐣岄兘鍦ㄧ埗鎺т欢鐨勮竟鐣屽唴锛屽垯杩斿洖false
return false;
}
+ #endregion
+
+ private void reloadLoaction(Control cocccc)
+ {
+ int _top = 0;
+ //濡傛灉鏄帶浠剁锛屼笉绉籐eft
+ if (dockPanel1_Container.Name == dragBoxCurrentName)
+ {
+ foreach (Control col in dockPanel1_Container.Controls)
+ {
+ col.Left = 0;
+ col.Top = _top;
+ _top += (col.Height + 2);
+ }
+ return;
+ }
+ if (cocccc == null) return;
+ //杩欐槸瀹瑰櫒
+ int x = 2;
+ int y = 2;
+ foreach (Control btn in dragBox1.Controls)
+ {
+ if (cocccc.Name == btn.Name)
+ continue;
+ if (cocccc.Visible ==false)
+ continue;
+ btn.Left = x;
+ btn.Top = y;
+ x += btn.Width + 2;
+ if (btn.Width > dragBox1.Width - x)
+ {
+ x = 2;
+ y += btn.Height +2;
+ }
+ }
+ cocccc.Left = x;
+ cocccc.Top = y;
+ return;
+ }
+
+ private void reloadMsg(Control cocccc)
+ {
+ System.Text.StringBuilder sb = new System.Text.StringBuilder();
+ if (ctrlCurrentObj != null)
+ sb.Append(ctrlCurrentObj.Name + "鍦�");
+ sb.Append(string.IsNullOrEmpty(dragBoxCurrentName) ? "琛ㄥ崟涓�" : "缁勪欢绠变腑");
+ sb.Append("锛屽潗鏍�:" + cocccc.Location.ToString());
+ sb.Append(",澶у皬锛�" + cocccc.Size.ToString());
+ // toolTip.SetToolTip(ctrlCurrentObj, sb.ToString());
+ }
}
}
\ No newline at end of file
--
Gitblit v1.9.3