【问题标题】:Lock the Height resizing in a .NET Custom Control while in design mode在设计模式下锁定 .NET 自定义控件中的高度调整大小
【发布时间】:2010-08-13 16:05:57
【问题描述】:

我正在开发一个 C# .NET 自定义控件,我想防止用户在设计模式下调整高度,同时允许他们调整宽度。

【问题讨论】:

    标签: c# .net user-controls


    【解决方案1】:

    我知道这个问题有点老了,但以防万一有人寻找这个问题,我会尝试回答:

    您必须在您的用户控件中覆盖SetBoundsCore 方法。像这样的:

    protected override void SetBoundsCore(
        int x, int y, int width, int height, BoundsSpecified specified)
    {
        // EDIT: ADD AN EXTRA HEIGHT VALIDATION TO AVOID INITIALIZATION PROBLEMS
        // BITWISE 'AND' OPERATION: IF ZERO THEN HEIGHT IS NOT INVOLVED IN THIS OPERATION
        if ((specified & BoundsSpecified.Height) == 0 || height == DEFAULT_CONTROL_HEIGHT)
        {
            base.SetBoundsCore(x, y, width, DEFAULT_CONTROL_HEIGHT, specified);
        }
        else
        {
            return; // RETURN WITHOUT DOING ANY RESIZING
        }
    }
    

    【讨论】:

      【解决方案2】:

      您是否尝试设置MinHeightMaxHeight 属性?

      【讨论】:

      • 不会阻止缩小高度——除非两者相同。另外,即使在运行时模式下也会阻止它。
      • 没有 MinHeight 和 MaxHeight 属性,只有 MinSize 和 MaxSize,并且必须同时设置高度和宽度属性才能工作。
      【解决方案3】:

      尝试使用“DesignMode”属性,这表明您处于设计模式,来自 UI 设计器模式。 (见MSDN)。

      public int Height()
      {
          get { ... }
          set
          { 
              if (this.DesignMode) return;
              else this.myHeight = value;
          }
      }
      

      【讨论】:

      • 这具有使 Visual Studio 崩溃的奇怪效果,但它似乎在正确的轨道上。
      【解决方案4】:
      // Override SetBoundsCore method to set resize limits
      

      //这段代码将高度固定为20,其他属性可以更改

            protected override void SetBoundsCore(int x, int y,
         int width, int height, BoundsSpecified specified)
              {
                  // Set a fixed height for the control.
                  base.SetBoundsCore(x, y, width, 20, specified);
              }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-05-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-01-24
        • 2010-10-20
        • 1970-01-01
        相关资源
        最近更新 更多