Блокировка изменения высоты в пользовательском элементе управления .NET в режиме разработки - PullRequest
4 голосов
/ 13 августа 2010

Я занимаюсь разработкой пользовательского элемента управления C # .NET и хочу, чтобы пользователь, находясь в режиме разработки, не изменял размеры высоты, в то же время позволяя им изменять ширину.

Ответы [ 4 ]

13 голосов
/ 15 сентября 2011

Я знаю, что этот вопрос немного устарел, но на всякий случай, если кто-то ищет это, я постараюсь ответить на него:

Вам необходимо переопределить метод 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
    }
}
1 голос
/ 13 августа 2010

Вы пытались установить свойства MinHeight и MaxHeight?

0 голосов
/ 07 сентября 2016
// 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);
        }
0 голосов
/ 13 августа 2010

Попробуйте использовать свойство 'DesignMode', это означает, что вы находитесь в режиме разработки, т.е. в режиме конструктора пользовательского интерфейса.(См. MSDN ).

public int Height()
{
    get { ... }
    set
    { 
        if (this.DesignMode) return;
        else this.myHeight = value;
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...