Тема: C# Кто-то сможет помочь с формой:?

Ответить в теме
Показано с 1 по 5 из 5
  1. Вверх #1
    Посетитель Аватар для road
    Пол
    Мужской
    Возраст
    43
    Сообщений
    386
    Репутация
    52

    Smile C# Кто-то сможет помочь с формой:?

    Всем привет, сделал кастомную форму, т.е. FormBorderStyle == None. На каждую сторону кинул по панельке шириной в 3 пикселя - это будут мои новые бордеры, за которые я хочу уметь растягивать и сжимать форму.
    Собствено с правым, и нижним бордерами все понятно, там легко. А вот левый и верхний, вот с ними проблемы - когда я пытаюсь сжать форму и дохожу до значения MinimumSize - форма начинает перемещаться...А мне нужно чтобы она уменьшилась до минимума и остановилась, никак не могу сделать((
    Вот мой код левого бордера

    private void borderW_MouseDown(object sender, MouseEventArgs e)
    {
    Active = true;
    }
    Size s = new Size(150, 50);
    private void borderW_MouseMove(object sender, MouseEventArgs e)
    {
    if (Active)
    {
    if (e.X < 0)
    {
    this.Location = new Point(this.Left + e.X, this.Top);
    this.Size = new Size(this.Width - e.X, this.Height);
    }
    else
    {
    this.Size = new Size(this.Width - e.X, this.Height);
    this.Location = new Point(this.Left + e.X, this.Top);

    }
    }
    }
    private void borderW_MouseUp(object sender, MouseEventArgs e)
    {
    Active = false;
    }
    ***


  2. Вверх #2
    Новичок Аватар для Programming4Life
    Пол
    Мужской
    Сообщений
    99
    Репутация
    32
    вместо if (Active) нужно if (Active && this.Width>10)

  3. Вверх #3
    Посетитель Аватар для road
    Пол
    Мужской
    Возраст
    43
    Сообщений
    386
    Репутация
    52
    this.Width>10 - ничего не даст, исходя из кода можно было бы написать this.Width>150, но тогда после того как оно дойдет до это величины, обратно его уже растянуть я не смогу...
    ***

  4. Вверх #4
    Посетитель Аватар для road
    Пол
    Мужской
    Возраст
    43
    Сообщений
    386
    Репутация
    52
    Левый край получилось сделать, вот так
    if (Active)
    {
    if (e.X < 0)
    {
    this.Location = new Point(this.Left + e.X, this.Top);
    this.Size = new Size(this.Width - e.X, this.Height);
    }
    else
    {
    if(this.Width - e.X > s.Width) // меньше этого размера сжиматься не будет
    {
    this.Size = new Size(this.Width - e.X, this.Height);
    this.Location = new Point(this.Left + e.X, this.Top);
    }
    }
    }

    Но теперь не могу справиться с левым верхним углом, вот код -

    private void borderNW_MouseMove(object sender, MouseEventArgs e)
    {
    if (Active)
    {
    if (e.Y < 0 || e.X < 0)
    {
    this.Location = new Point(this.Left + e.X, this.Top + e.Y);
    this.Size = new Size(this.Width - e.X, this.Height - e.Y);

    }
    else
    {
    this.Size = new Size(this.Width - e.X, this.Height - e.Y);
    this.Location = new Point(this.Left + e.X, this.Top + e.Y);
    }

    IntPtr hRgn = CreateRoundRectRgn(0, 0, this.Width + 1, this.Height + 1, Radius, Radius);
    SetWindowRgn(this.Handle, hRgn, true);

    this.Refresh();
    }
    }
    ***

  5. Вверх #5
    Новичок Аватар для Programming4Life
    Пол
    Мужской
    Сообщений
    99
    Репутация
    32
    Цитата Сообщение от road Посмотреть сообщение
    this.Width>10 - ничего не даст, исходя из кода можно было бы написать this.Width>150, но тогда после того как оно дойдет до это величины, обратно его уже растянуть я не смогу...
    да, я натупил, проверяй если this.Width < 10 и юзер хочет форму увеличить значит разрешай, иначе нет, писать код лень тут уже больше одной строки


Ответить в теме

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения