Fixed Panel Height in a SplitContainer
Asked Answered
D

5

10

I have a WinForm containing a bindingNavigator at the top and a splitContainer with two horisontal panels below it. The splitContainer fills the space not occupied by the bindingNavigator.

I would like to set the bottom panel to a fixed height of, say 100 pixels, and have the top panel fill the rest of the space.

This is my current code:

kundeteamSplitContainer.SplitterDistance = kundeteamSplitContainer.Height - 100;

I would have thought that this would set the splitter distance dynamically to 100 pixels less than the total height at all times, making the bottom panel occupy the remaining 100 pixels. This does not work as intended though as the bottom panel keeps changing size when I re-size the form at run-time.

EDIT: I am sticking with the splitContainer if at all possible. Got a bunch of functionality related to hiding/showing the bottom panel already implemented and I don't want to do that work again.

Doucet answered 3/9, 2009 at 14:6 Comment(0)
D
20

As pointed out by Lee:

Set the FixedPanel property to the panel you want to remain the same size.

This works like this:

teamSplitContainer.SplitterDistance = teamSplitContainer.Height - 100;
teamSplitContainer.FixedPanel = FixedPanel.Panel2;
Doucet answered 3/9, 2009 at 14:30 Comment(0)
D
27

Set the FixedPanel property to the panel you want to remain the same size.

Decretal answered 3/9, 2009 at 14:18 Comment(0)
D
20

As pointed out by Lee:

Set the FixedPanel property to the panel you want to remain the same size.

This works like this:

teamSplitContainer.SplitterDistance = teamSplitContainer.Height - 100;
teamSplitContainer.FixedPanel = FixedPanel.Panel2;
Doucet answered 3/9, 2009 at 14:30 Comment(0)
D
3

Best way you can set isSplitterFixed Property to "True"

Property Window for splitcontainer

Dagall answered 15/9, 2016 at 13:14 Comment(0)
B
2

I'd use a TableLayoutControl for something like this rather than a Splitter.

Brachial answered 3/9, 2009 at 14:12 Comment(3)
Well.. that may very well be, but I'm not changing at this point. My more experienced colleagues told me to use a splitter, so I'll stick to it for now.Doucet
Fair enough. I've only used the VS2005 version and found it a bit too buggy.Brachial
@Sakkle: But if the only requirement is keeping the panel-hiding code, you can set the TableLayoutPanel's row height to 0 and it'd work pretty much the same...Granado
W
0

If you want only show and disable the panel (no automatic resize, no resize by the user) add to the code by Sakkle this line:

teamSplitContainer.IsSplitterFixed = true;
Wideeyed answered 9/1, 2014 at 13:12 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.