【问题标题】:How to set the min/max distance for the Splitter control?如何设置拆分器控件的最小/最大距离?
【发布时间】:2010-07-21 07:38:55
【问题描述】:

我想设置 splitterdistance 移动的最小和最大距离...如何设置...我尝试使用 panelMinSize 它没有工作...

实际上,在拆分器的一个面板中,我有一个控件,拆分器应根据控件进行调整..

【问题讨论】:

    标签: c# .net winforms


    【解决方案1】:

    如果您不使用 FixedPanel,请使用 panel1 和 panel2 的 MinSize

    说,Panel1MinSize = 20panel2MinSize = 50

    【讨论】:

      【解决方案2】:

      您可以在InitializeComponent();之后的构造函数中将SplitContainer的SplitterDistance设置为控件的宽度(假设您有一个垂直拆分容器,如果您有一个水平拆分容器,则使用高度)

      然后您可以附加到SplitterMoved 事件并确保SplitterDistance 大于控件宽度。

      例如:

      using System;
      using System.Collections.Generic;
      using System.ComponentModel;
      using System.Data;
      using System.Drawing;
      using System.Text;
      using System.Windows.Forms;
      
      namespace SplitterDistanceTest
      {
         public partial class Form1 : Form
         {
            public Form1()
            {
               InitializeComponent();
               splitContainer1.SplitterDistance = groupBox1.Width;
               splitContainer1.SplitterMoved += new SplitterEventHandler(splitContainer1_SplitterMoved);
            }
      
            void splitContainer1_SplitterMoved(object sender, SplitterEventArgs e)
            {
               ResizeSplitterDistance();
            }
      
            private const int MAXIMUM_SIZE = 200;
      
            private void ResizeSplitterDistance()
            {    
               if (splitContainer1.SplitterDistance < groupBox1.Width)
               {
                  splitContainer1.SplitterDistance = groupBox1.Width;
               }
               if (splitContainer1.SplitterDistance > MAXIMUM_SIZE)
               {
                  splitContainer1.SplitterDistance = MAXIMUM_SIZE;
               }
      
               // You could also do max/min percentages.  Ive shown this below
               // but commented out
               /*int minimum_percent = 30;
               int minimum_size = (int)((minimum_percent / 100m) * (decimal)splitContainer1.Width);
               int maximum_percent = 50;
               int maximum_size = (int)((maximum_percent / 100m) * (decimal)splitContainer1.Width);
               if (splitContainer1.SplitterDistance < minimum_size)
               {
                  splitContainer1.SplitterDistance = minimum_size;
               }
               if (splitContainer1.SplitterDistance > maximum_size)
               {
                  splitContainer1.SplitterDistance = maximum_size;
               }*/
            }
         }
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-07-23
        • 1970-01-01
        • 1970-01-01
        • 2015-04-27
        • 1970-01-01
        相关资源
        最近更新 更多