mirror of
https://github.com/colhountech/DarkUI.Net5.git
synced 2025-07-02 07:09:27 +03:00
Added ActiveContentChanged event to DockPanel
This commit is contained in:
parent
3466c3a241
commit
2aeffecd0a
@ -106,6 +106,7 @@
|
||||
<Compile Include="Docking\DarkToolWindow.cs">
|
||||
<SubType>UserControl</SubType>
|
||||
</Compile>
|
||||
<Compile Include="Docking\EventArgs\DockContentEventArgs.cs" />
|
||||
<Compile Include="Docking\Items\DarkDockSplitter.cs" />
|
||||
<Compile Include="Docking\Items\DarkDockTab.cs" />
|
||||
<Compile Include="Docking\Items\DarkDockTabArea.cs" />
|
||||
|
@ -52,6 +52,8 @@ namespace DarkUI.Docking
|
||||
Order = order;
|
||||
|
||||
_tabArea = new DarkDockTabArea(DockArea);
|
||||
|
||||
DockPanel.ActiveContentChanged += DockPanel_ActiveContentChanged;
|
||||
}
|
||||
|
||||
#endregion
|
||||
@ -282,6 +284,10 @@ namespace DarkUI.Docking
|
||||
|
||||
var width = ClientRectangle.Width - Padding.Horizontal - _tabArea.DropdownRectangle.Width;
|
||||
var offsetArea = new Rectangle(Padding.Left, 0, width, 0);
|
||||
|
||||
if (!_tabs.ContainsKey(DockPanel.ActiveContent))
|
||||
return;
|
||||
|
||||
var tab = _tabs[DockPanel.ActiveContent];
|
||||
|
||||
if (tab.ClientRectangle.IsEmpty)
|
||||
@ -438,6 +444,23 @@ namespace DarkUI.Docking
|
||||
DockPanel.ActiveContent = content;
|
||||
}
|
||||
|
||||
private void DockPanel_ActiveContentChanged(object sender, DockContentEventArgs e)
|
||||
{
|
||||
if (!_contents.Contains(e.Content))
|
||||
return;
|
||||
|
||||
if (e.Content == VisibleContent)
|
||||
return;
|
||||
|
||||
VisibleContent = e.Content;
|
||||
|
||||
foreach (var content in _contents)
|
||||
content.Visible = content == VisibleContent;
|
||||
|
||||
EnsureVisible();
|
||||
Invalidate();
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
#region Render Region
|
||||
|
@ -1,5 +1,6 @@
|
||||
using DarkUI.Config;
|
||||
using DarkUI.Win32;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Windows.Forms;
|
||||
@ -8,12 +9,19 @@ namespace DarkUI.Docking
|
||||
{
|
||||
public class DarkDockPanel : UserControl
|
||||
{
|
||||
#region Event Region
|
||||
|
||||
public event EventHandler<DockContentEventArgs> ActiveContentChanged;
|
||||
|
||||
#endregion
|
||||
|
||||
#region Field Region
|
||||
|
||||
private List<DarkDockContent> _contents;
|
||||
private Dictionary<DarkDockArea, DarkDockRegion> _regions;
|
||||
|
||||
private DarkDockContent _activeContent;
|
||||
private bool _switchingContent = false;
|
||||
|
||||
#endregion
|
||||
|
||||
@ -24,6 +32,11 @@ namespace DarkUI.Docking
|
||||
get { return _activeContent; }
|
||||
internal set
|
||||
{
|
||||
if (_switchingContent)
|
||||
return;
|
||||
|
||||
_switchingContent = true;
|
||||
|
||||
_activeContent = value;
|
||||
|
||||
ActiveGroup = _activeContent.DockGroup;
|
||||
@ -31,6 +44,11 @@ namespace DarkUI.Docking
|
||||
|
||||
foreach (var region in _regions.Values)
|
||||
region.Redraw();
|
||||
|
||||
if (ActiveContentChanged != null)
|
||||
ActiveContentChanged(this, new DockContentEventArgs(_activeContent));
|
||||
|
||||
_switchingContent = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
14
DarkUI/Docking/EventArgs/DockContentEventArgs.cs
Normal file
14
DarkUI/Docking/EventArgs/DockContentEventArgs.cs
Normal file
@ -0,0 +1,14 @@
|
||||
using System;
|
||||
|
||||
namespace DarkUI.Docking
|
||||
{
|
||||
public class DockContentEventArgs : EventArgs
|
||||
{
|
||||
public DarkDockContent Content { get; private set; }
|
||||
|
||||
public DockContentEventArgs(DarkDockContent content)
|
||||
{
|
||||
Content = content;
|
||||
}
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user