How to prevent tabs from getting realigned when in Multiline mode?
3 Sep 20201 minute to read
We will be making this a property based feature in a future version. For now, derive from our base TabControlExt class and do the following.
This code will not move the selected Tab to the front row when in Multiline mode.
// Custom tabcontrol will prevent tab realignment in Multiline mode.
public class MyTabControlExt : TabControlExt
{
// Plug-in the custom MyMultilineTabPanelRenderer class.
protected override void RendererChanged(TabPanelRenderer rendererNew)
{
if(rendererNew == null
&& this.Multiline)
{
rendererNew = new MyMultilineTabPanelRenderer(this);
}
base.RendererChanged(rendererNew);
}
}
// Custom MyMultilineTabPanelRenderer to prevent tab realignment.
public class MyMultilineTabPanelRenderer : MultilineTabPanelRenderer
{
public MyMultilineTabPanelRenderer(ITabControl parent)
: base(parent)
{
}
protected override void ValidateSelectedTabsPosition()
{
// Don’t call the base class method which will try to move the selected tab
// to the front row.
}
}
'Custom tabcontrol will prevent tab realignment in Multiline mode.
Public Class MyTabControlExt
Inherits TabControlExt
'Plug-in the custom MyMultilineTabPanelRenderer class.
Protected Overrides Sub RendererChanged(ByVal rendererNew As TabPanelRenderer)
If rendererNew Is Nothing AndAlso Me.Multiline Then
rendererNew = New MyMultilineTabPanelRenderer(Me)
End If
MyBase.RendererChanged(rendererNew)
End Sub 'RendererChanged
End Class 'MyTabControlExt
'Custom MyMultilineTabPanelRenderer to prevent tab realignment.
Public Class MyMultilineTabPanelRenderer
Inherits MultilineTabPanelRenderer
Public Sub New(ByVal parent As ITabControl)
MyBase.New(parent)
End Sub 'New
Protected Overrides Sub ValidateSelectedTabsPosition()
End Sub 'ValidateSelectedTabsPosition
End Class 'MyMultilineTabPanelRenderer ’ Don’t call the base class method which will try to move the selected tab.