Loading...
Loading...
Compare original and translation side by side
using Syncfusion.Windows.Forms.Tools;
public partial class Form1 : Form
{
private DockingManager dockingManager1;
private Panel solutionExplorer;
private Panel toolbox;
private Panel properties;
private Panel output;
public Form1()
{
InitializeComponent();
// Create DockingManager
this.dockingManager1 = new DockingManager(this.components);
this.dockingManager1.HostControl = this;
// Create dock panels
this.solutionExplorer = new Panel();
this.toolbox = new Panel();
this.properties = new Panel();
this.output = new Panel();
// Add panels to form
this.Controls.AddRange(new Control[] {
solutionExplorer, toolbox, properties, output
});
// Enable docking for all panels
this.dockingManager1.SetEnableDocking(solutionExplorer, true);
this.dockingManager1.SetEnableDocking(toolbox, true);
this.dockingManager1.SetEnableDocking(properties, true);
this.dockingManager1.SetEnableDocking(output, true);
// Set dock labels
this.dockingManager1.SetDockLabel(solutionExplorer, "Solution Explorer");
this.dockingManager1.SetDockLabel(toolbox, "Toolbox");
this.dockingManager1.SetDockLabel(properties, "Properties");
this.dockingManager1.SetDockLabel(output, "Output");
// Arrange dock positions
this.dockingManager1.DockControl(solutionExplorer, this, DockingStyle.Right, 250);
this.dockingManager1.DockControl(toolbox, this, DockingStyle.Left, 200);
this.dockingManager1.DockControl(properties, solutionExplorer, DockingStyle.Tabbed, 200);
this.dockingManager1.DockControl(output, this, DockingStyle.Bottom, 150);
// Apply visual style
this.dockingManager1.VisualStyle = VisualStyle.Office2016Colorful;
}
}using Syncfusion.Windows.Forms.Tools;
public partial class Form1 : Form
{
private DockingManager dockingManager1;
private Panel solutionExplorer;
private Panel toolbox;
private Panel properties;
private Panel output;
public Form1()
{
InitializeComponent();
// 创建DockingManager
this.dockingManager1 = new DockingManager(this.components);
this.dockingManager1.HostControl = this;
// 创建停靠面板
this.solutionExplorer = new Panel();
this.toolbox = new Panel();
this.properties = new Panel();
this.output = new Panel();
// 向窗体添加面板
this.Controls.AddRange(new Control[] {
solutionExplorer, toolbox, properties, output
});
// 为所有面板启用停靠能力
this.dockingManager1.SetEnableDocking(solutionExplorer, true);
this.dockingManager1.SetEnableDocking(toolbox, true);
this.dockingManager1.SetEnableDocking(properties, true);
this.dockingManager1.SetEnableDocking(output, true);
// 设置停靠标签
this.dockingManager1.SetDockLabel(solutionExplorer, "Solution Explorer");
this.dockingManager1.SetDockLabel(toolbox, "Toolbox");
this.dockingManager1.SetDockLabel(properties, "Properties");
this.dockingManager1.SetDockLabel(output, "Output");
// 排列停靠位置
this.dockingManager1.DockControl(solutionExplorer, this, DockingStyle.Right, 250);
this.dockingManager1.DockControl(toolbox, this, DockingStyle.Left, 200);
this.dockingManager1.DockControl(properties, solutionExplorer, DockingStyle.Tabbed, 200);
this.dockingManager1.DockControl(output, this, DockingStyle.Bottom, 150);
// 应用视觉样式
this.dockingManager1.VisualStyle = VisualStyle.Office2016Colorful;
}
}// Enable document mode
this.dockingManager1.EnableDocumentMode = true;
// Add document tabs in NewDockStateEndLoad event
this.dockingManager1.NewDockStateEndLoad += (s, e) =>
{
this.dockingManager1.DockAsDocument(document1);
this.dockingManager1.DockAsDocument(document2);
};
// Set window mode (Tool allows dock/float, Document allows float only)
this.dockingManager1.SetWindowMode(document1, WindowMode.Document);// 启用文档模式
this.dockingManager1.EnableDocumentMode = true;
// 在NewDockStateEndLoad事件中添加文档标签
this.dockingManager1.NewDockStateEndLoad += (s, e) =>
{
this.dockingManager1.DockAsDocument(document1);
this.dockingManager1.DockAsDocument(document2);
};
// 设置窗口模式(Tool允许停靠/浮动,Document仅允许浮动)
this.dockingManager1.SetWindowMode(document1, WindowMode.Document);// Dock a control to specific side
this.dockingManager1.DockControl(panel1, this, DockingStyle.Left, 200);
// Float a control at specific location
Rectangle bounds = new Rectangle(100, 100, 300, 400);
this.dockingManager1.FloatControl(panel1, bounds);
// Auto-hide a control
this.dockingManager1.SetAutoHideMode(panel1, true);
// Tab control with another
this.dockingManager1.DockControl(panel2, panel1, DockingStyle.Tabbed, 200);// 将控件停靠到指定方向
this.dockingManager1.DockControl(panel1, this, DockingStyle.Left, 200);
// 在指定位置浮动控件
Rectangle bounds = new Rectangle(100, 100, 300, 400);
this.dockingManager1.FloatControl(panel1, bounds);
// 为控件启用自动隐藏
this.dockingManager1.SetAutoHideMode(panel1, true);
// 将控件与另一个控件合并为标签组
this.dockingManager1.DockControl(panel2, panel1, DockingStyle.Tabbed, 200);// Hide close button for specific control
this.dockingManager1.SetCloseButtonVisibility(panel1, false);
// Hide pin (auto-hide) button
this.dockingManager1.SetAutoHideButtonVisibility(panel1, false);
// Add custom caption button
CaptionButton customBtn = new CaptionButton();
customBtn.Name = "CustomButton";
customBtn.ImageIndex = 3; // From ImageList
customBtn.Type = CaptionButtonType.Custom;
this.dockingManager1.CaptionButtons.Add(customBtn);
// Customize button colors
this.dockingManager1.ActiveCaptionButtonForeColor = Color.Red;
this.dockingManager1.InActiveCaptionButtonForeColor = Color.Gray;// 隐藏指定控件的关闭按钮
this.dockingManager1.SetCloseButtonVisibility(panel1, false);
// 隐藏固定(自动隐藏)按钮
this.dockingManager1.SetAutoHideButtonVisibility(panel1, false);
// 添加自定义标题栏按钮
CaptionButton customBtn = new CaptionButton();
customBtn.Name = "CustomButton";
customBtn.ImageIndex = 3; // 来自ImageList
customBtn.Type = CaptionButtonType.Custom;
this.dockingManager1.CaptionButtons.Add(customBtn);
// 自定义按钮颜色
this.dockingManager1.ActiveCaptionButtonForeColor = Color.Red;
this.dockingManager1.InActiveCaptionButtonForeColor = Color.Gray;using Syncfusion.Runtime.Serialization;
// Enable auto-save on close
this.dockingManager1.PersistState = true;
// Save to XML file manually
AppStateSerializer serializer = new AppStateSerializer(
SerializeMode.XMLFile, "DockLayout");
this.dockingManager1.SaveDockState(serializer);
serializer.PersistNow();
// Load from XML file
AppStateSerializer serializer = new AppStateSerializer(
SerializeMode.XMLFile, "DockLayout");
this.dockingManager1.LoadDockState(serializer);
// Save to memory stream (for database)
MemoryStream ms = new MemoryStream();
AppStateSerializer serializer = new AppStateSerializer(
SerializeMode.BinaryFmtStream, ms);
this.dockingManager1.SaveDockState(serializer);
serializer.PersistNow();
// Store ms.ToArray() in databaseusing Syncfusion.Runtime.Serialization;
// 启用关闭时自动保存
this.dockingManager1.PersistState = true;
// 手动保存到XML文件
AppStateSerializer serializer = new AppStateSerializer(
SerializeMode.XMLFile, "DockLayout");
this.dockingManager1.SaveDockState(serializer);
serializer.PersistNow();
// 从XML文件加载
AppStateSerializer serializer = new AppStateSerializer(
SerializeMode.XMLFile, "DockLayout");
this.dockingManager1.LoadDockState(serializer);
// 保存到内存流(用于数据库存储)
MemoryStream ms = new MemoryStream();
AppStateSerializer serializer = new AppStateSerializer(
SerializeMode.BinaryFmtStream, ms);
this.dockingManager1.SaveDockState(serializer);
serializer.PersistNow();
// 将ms.ToArray()存储到数据库// Track dock state changes
this.dockingManager1.DockStateChanged += (s, e) =>
{
foreach (Control ctrl in e.Controls)
{
Console.WriteLine($"{ctrl.Name} state changed");
}
};
// Prevent specific dock operations
this.dockingManager1.DockStateChanging += (s, e) =>
{
if (e.NewState == DockState.Float && e.Controls[0] == panel1)
{
e.Cancel = true; // Prevent panel1 from floating
}
};
// Handle control activation
this.dockingManager1.DockControlActivated += (s, e) =>
{
Console.WriteLine($"{e.Control.Name} activated");
};
// Restrict dock sides dynamically
this.dockingManager1.PreviewDockHints += (s, e) =>
{
if (e.DraggingTarget == panel2)
{
// Only allow right docking on panel2
e.DockAbility = DockAbility.Right;
}
};// 跟踪停靠状态变更
this.dockingManager1.DockStateChanged += (s, e) =>
{
foreach (Control ctrl in e.Controls)
{
Console.WriteLine($"{ctrl.Name} state changed");
}
};
// 阻止特定停靠操作
this.dockingManager1.DockStateChanging += (s, e) =>
{
if (e.NewState == DockState.Float && e.Controls[0] == panel1)
{
e.Cancel = true; // 禁止panel1浮动
}
};
// 处理控件激活事件
this.dockingManager1.DockControlActivated += (s, e) =>
{
Console.WriteLine($"{e.Control.Name} activated");
};
// 动态限制停靠方向
this.dockingManager1.PreviewDockHints += (s, e) =>
{
if (e.DraggingTarget == panel2)
{
// 仅允许panel2停靠在右侧
e.DockAbility = DockAbility.Right;
}
};// Restrict where control can dock (inner docking)
this.dockingManager1.SetDockAbility(panel1, DockAbility.Top | DockAbility.Bottom);
// Restrict where control can dock in client area (outer docking)
this.dockingManager1.SetOuterDockAbility(panel1,
DockAbility.Left | DockAbility.Right);
// Make control float-only (cannot re-dock)
this.dockingManager1.SetFloatOnly(panel1, true);
// Disable floating for specific control
this.dockingManager1.SetAllowFloating(panel1, false);// 限制控件的内部停靠方向
this.dockingManager1.SetDockAbility(panel1, DockAbility.Top | DockAbility.Bottom);
// 限制控件在客户区的外部停靠方向
this.dockingManager1.SetOuterDockAbility(panel1,
DockAbility.Left | DockAbility.Right);
// 设为仅浮动模式(无法重新停靠)
this.dockingManager1.SetFloatOnly(panel1, true);
// 禁用指定控件的浮动能力
this.dockingManager1.SetAllowFloating(panel1, false);// Set visual style
this.dockingManager1.VisualStyle = VisualStyle.Office2016Colorful;
// Customize active caption colors
this.dockingManager1.ActiveCaptionBackground = new BrushInfo(
GradientStyle.Horizontal, Color.DarkBlue, Color.LightBlue);
this.dockingManager1.ActiveCaptionForeGround = Color.White;
// Customize dock tab colors
this.dockingManager1.DockTabBackColor = Color.LightGray;
this.dockingManager1.ActiveDockTabBackColor = Color.White;
this.dockingManager1.DockTabForeColor = Color.Black;
// Customize document tab colors
this.dockingManager1.DocumentWindowSettings.TabBackColor = Color.SteelBlue;
this.dockingManager1.DocumentWindowSettings.ActiveTabBackColor = Color.Green;
this.dockingManager1.DocumentWindowSettings.TabHeight = 38;
// Set drag provider style
this.dockingManager1.DragProviderStyle = DragProviderStyle.VS2012;// 设置视觉样式
this.dockingManager1.VisualStyle = VisualStyle.Office2016Colorful;
// 自定义激活状态标题栏颜色
this.dockingManager1.ActiveCaptionBackground = new BrushInfo(
GradientStyle.Horizontal, Color.DarkBlue, Color.LightBlue);
this.dockingManager1.ActiveCaptionForeGround = Color.White;
// 自定义停靠标签颜色
this.dockingManager1.DockTabBackColor = Color.LightGray;
this.dockingManager1.ActiveDockTabBackColor = Color.White;
this.dockingManager1.DockTabForeColor = Color.Black;
// 自定义文档标签颜色
this.dockingManager1.DocumentWindowSettings.TabBackColor = Color.SteelBlue;
this.dockingManager1.DocumentWindowSettings.ActiveTabBackColor = Color.Green;
this.dockingManager1.DocumentWindowSettings.TabHeight = 38;
// 设置拖拽提示样式
this.dockingManager1.DragProviderStyle = DragProviderStyle.VS2012;SetEnableDocking(Control, bool)SetDockLabel(Control, string)SetDockIcon(Control, Icon)DockControl(Control, Control, DockingStyle, int)FloatControl(Control, Rectangle)SetAutoHideMode(Control, bool)SetAsMDIChild(Control, bool)DockAsDocument(Control)GetDockStyle(Control)IsFloating(Control)GetAutoHideMode(Control)IsMDIMode(Control)IsTabbed(Control)SaveDockState()SaveDockState(AppStateSerializer)LoadDockState()LoadDockState(AppStateSerializer)SetCloseButtonVisibility(Control, bool)SetAutoHideButtonVisibility(Control, bool)SetMenuButtonVisibility(Control, bool)SetDockAbility(Control, DockAbility)SetOuterDockAbility(Control, DockAbility)SetFloatOnly(Control, bool)SetAllowFloating(Control, bool)SetEnableDocking(Control, bool)SetDockLabel(Control, string)SetDockIcon(Control, Icon)DockControl(Control, Control, DockingStyle, int)FloatControl(Control, Rectangle)SetAutoHideMode(Control, bool)SetAsMDIChild(Control, bool)DockAsDocument(Control)GetDockStyle(Control)IsFloating(Control)GetAutoHideMode(Control)IsMDIMode(Control)IsTabbed(Control)SaveDockState()SaveDockState(AppStateSerializer)LoadDockState()LoadDockState(AppStateSerializer)SetCloseButtonVisibility(Control, bool)SetAutoHideButtonVisibility(Control, bool)SetMenuButtonVisibility(Control, bool)SetDockAbility(Control, DockAbility)SetOuterDockAbility(Control, DockAbility)SetFloatOnly(Control, bool)SetAllowFloating(Control, bool)