Windows.Forms SplitContainer.SplitterWidth不会在运行时保持设置状态

时间:2012-01-11 05:05:06

标签: c# .net winforms

我试图像这样放一个很酷的小图片

one of these guys

对于我的拆分容器拖动按钮。

我在OnPaint Event中执行以下操作

private void splitContainer1_Paint(object sender, PaintEventArgs e)
    {
        var control = sender as SplitContainer;            

        e.Graphics.DrawImage("...".Properties.Resources.divider, control.SplitterRectangle, 0, 0, 1040, 50, GraphicsUnit.Pixel);

    } 

它确实绘制了我想要的图像,问题是高度总是4像素。 在设计器中,我将SplitterWidth设置为15,但在运行时它始终保持为4.因此,实际上只显示4个像素。

2 个答案:

答案 0 :(得分:9)

是的,根据您的评论,SplitterPanelTableLayoutPanel确实会使运行时忘记 SplitterWidth设置,所以我确实复制了问题。 TableLayoutPanels是奇怪的生物。

不幸的是,显而易见的解决办法:

public Form1() {
  InitializeComponent();
  splitContainer1.SplitterWidth = 15;
}

答案 1 :(得分:0)

当容器控件嵌套到设计器中的其他容器控件中时,必须先将嵌套控件拖放到窗体上。

例如,如果要在设计时嵌套splitContaner1(child)和panel1(parent),则必须首先将splitContaner1(嵌套)拖放到窗体上。在那个父面板1之后。最后必须将splitContaner1移动到panel1。