To reproduce:
1. Add three SplitPanels in horizontal mode.
2. Use the following code snippet.
3. Drag the second splitter upwards. It changes the height on the first panel
void RadForm1_Load(object sender, EventArgs e)
{
FixHeight(splitPanel1);
FixHeight(splitPanel3);
}
public static void FixHeight(SplitPanel panel)
{
panel.SizeInfo.MinimumSize = new Size(0, 55);
panel.SizeInfo.MaximumSize = new Size(0, 55);
}
In this particular case, the main monitor has 125% DPI. When showing a RadForm which contains RadSplitContainer with 2 panels, the control is not scaled correctly.
Expected:
Current behavior:
Workaround:
Set the RadControl.EnableRadAutoScale property to false.
Dear Sir/Madam
Unfortunately, the SplitContainer in the .NET version 5 has problems, as you can see in the picture, I can not change the size in design time.
Is there a newer version that fixes this problem?
Telerik Winform Version :2020.3.1020
Visual Studio Version : 16.8.3
Best Regards
this.radSplitContainer2.Cursor = System.Windows.Forms.Cursors.SizeNS;
A project to reproduce is attached
Thanks
The Modifiers property should be visible in the properties window when a SplitPanel instance is selected. Workaround: Manually change the modifier in the Designer.cs file to protected.
Backgroud
The behavior of split button makes me confused when I use split button collapsing the split panel. It locates in different position when I restore the split button by double-click. What's weirder is that double-click will make no effect when the split button located on the edge. I don't like these default behaviours.
Question
1. Do you know how to overwrite the default behaviour of split button?
2. Is there a virtual method or some event I can reimplement?
3. I want to collapse the right panel to the right side, and restore it to the initial location, and just these to behaviours. How can I do it?
Thanks!
Use attached to reproduce. Move the splitter with the mouse and you will notice that is position is not correct when the mouse is released
To reproduce: - Use relative sizing and save the RelativeRatio. - Set the same value after restarting the application. - The panel size is not the same. Workaround: Use absolute size.
To reproduce: Add a RadSplitContainer with several SplitPanels and use the following code: this.radSplitContainer1.EnableCollapsing = true; this.radSplitContainer1.UseSplitterButtons = true; If you run the project, you will notice that the next/previous buttons are displayed for manipulating the SplitPanel's collapsed/expanded state. If you click one of the next/previous buttons, the relevant SplitPanel will be collapsed and the splitter will remain visible. Thus, the user has the possibility to return the previous state of the SplitPanel. However, if you try to collapse the SplitPanel programmatically by setting the Collapsed property to true, the corresponding splitter will disapper.
Please refer to the attached sample project. Double click the middle splitter in the horizontal split container. Workaround: manually collapse the desired split panel: private void Form1_Load(object sender, EventArgs e) { this.radSplitContainer3.PanelCollapsing += radSplitContainer3_PanelCollapsing; foreach (SplitterElement s in this.radSplitContainer3.Splitters) { s.DoubleClick += s_DoubleClick; } } private void s_DoubleClick(object sender, EventArgs e) { SplitterElement s = sender as SplitterElement; ((SplitPanel)s.RightNode).Collapsed = true; }
How to reproduce: check the attached video Workaround: Only split panels can be added to RadSplitContainer, so add a panel first to the control before using the document outline
The mouse cursor should not also change to split. How to reproduce: set certain splitter elements to be fixed, then you would notice that they have the resizing image visible and the cursor changes to split if you hover them Workaround: manually hide the layout element and use a custom control overriding its Cursor property public partial class Form1 : Form { public Form1() { InitializeComponent(); new RadControlSpyForm().Show(); this.radSplitContainer1.EnableCollapsing = true; this.radSplitContainer1.UseSplitterButtons = true; } protected override void OnShown(EventArgs e) { base.OnShown(e); foreach (SplitterElement splitter in this.radSplitContainer1.Splitters) { splitter.Fixed = true; splitter.Layout.Visibility = ElementVisibility.Collapsed; } } private void button1_Click(object sender, EventArgs e) { foreach (SplitterElement splitter in this.radSplitContainer1.Splitters) { splitter.Fixed = !splitter.Fixed; splitter.Layout.Visibility = !splitter.Fixed ? ElementVisibility.Visible : ElementVisibility.Collapsed; } } } public class MyRadSplitContainer : RadSplitContainer { public override string ThemeClassName { get { return typeof(RadSplitContainer).FullName; } } public override Cursor Cursor { get { return base.Cursor; } set { SplitterElement splitter = this.GetSplitterElementAtPoint(this.PointToClient(Cursor.Position)); if (!(splitter != null && splitter.Fixed)) { base.Cursor = value; } } } }
To reproduce: add a RadSplitContainer with 3 identical SplitPanels. The left panel needs to be initially collapsed. That is why we use the introduced public API (MoveSplitter method). When the form is shown and you try to expand the left (yellow) panel, you will notice that the splitter is not restored to the correct position. Please refer to the attached gif file. This must be handled for Vertical and Horizontal orientation!!! Workaround: Private Sub RadForm1_Load(sender As Object, e As EventArgs) Handles MyBase.Load AddHandler Me.RadSplitContainer1.MouseDown, AddressOf SplitContainerMouseDown End Sub Private Sub SplitContainerMouseDown(sender As Object, e As MouseEventArgs) Dim clickedElement = Me.RadSplitContainer1.ElementTree.GetElementAtPoint(e.Location) If TypeOf clickedElement Is SplitterElement Or TypeOf (clickedElement.Parent) Is SplitterElementLayout Then RadSplitContainer1.RestoreSplitterPosition(Me.RadSplitContainer1.Splitters(0)) RemoveHandler Me.RadSplitContainer1.MouseDown, AddressOf SplitContainerMouseDown End If End Sub
Unable to cast object of type 'System.EventArgs' to type 'System.Windows.Forms.MouseEventArgs'. Workaround: use the SpliPanel.Collapsed property to control whether the split panel is expanded or collapsed.
To reproduce: splitPanel1.SizeInfo.SizeMode = Telerik.WinControls.UI.Docking.SplitPanelSizeMode.Absolute; splitPanel1.SizeInfo.AbsoluteSize = new Size(300, this.radSplitContainer1.Height); splitPanel1.SizeInfo.MinimumSize = new Size(80, 0); radSplitContainer1.UseSplitterButtons = true; radSplitContainer1.EnableCollapsing = true; - Start the application and collapse the panel with the button. - The panel is collapsed, but cannot be expanded to its previous position.
When you cut-copy RadSplitContainer containing two SplitPanels from one form to another, only the RadSplitContainer is pasted, but the SplitPanels are missing.
How to reproduce: check the attached project Workaround: check the attached project
I have three split panels and when the auto scroll is enabled some lines appear in the split panel. The issue can be reproduced with RadPanel as well. Workaround: http://www.telerik.com/forums/problem-with-auto-scroll#ygV1vwyA40KZ4KoD28AhvQ
If the AutoScroll of RadSplitContainer is true and I scroll the container a little, don’t work the resizes of the panels. sample code: public Form1() { InitializeComponent(); RadSplitContainer radSplitContainer1 = new RadSplitContainer() { Dock = DockStyle.Fill, AutoScroll = true }; this.Controls.Add(radSplitContainer1); for (int i = 0; i < 10; i++) { var panel = new SplitPanel(); panel.SizeInfo.SizeMode = SplitPanelSizeMode.Absolute; panel.SizeInfo.AbsoluteSize = new Size(100, 0); radSplitContainer1.SplitPanels.Add(panel); } }