Мерцание нижнего края формы при масштабировании за верхний край - C#

Узнай цену своей работы

Формулировка задачи:

Доброго времени суток. Столкнулся с проблемой. У меня есть форма со стилем FormBorderStyle = None. Мне надо её масштабировать за края. Делаю это следующим образом (пока что только для верхнего края формы и вертикального масштабирования):
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using System.Runtime.InteropServices;
 
namespace floatingPicture
{
    public partial class pictureForm : Form
    {
        public pictureForm()
        {
            InitializeComponent();
        }
 
        private Point startingMousePosition;
        private bool canResize = false;
        private bool resizingForm = false;
 
        private void pictureForm_MouseDown(object sender, MouseEventArgs e)
        {
            if (canResize)
            {
                resizingForm = true;
                startingMousePosition = e.Location;
            }
        }
 
        private void pictureForm_MouseMove(object sender, MouseEventArgs e)
        {
            if (resizingForm)
            {
                this.Top += e.Y - startingMousePosition.Y;;
                this.Height -= e.Y - startingMousePosition.Y;;
            }
            else
            {
                if (e.Y <= 3)
                {
                    this.Cursor = Cursors.SizeNS;
                    canResize = true;
                }
                else
                {
                    this.Cursor = Cursors.Arrow;
                    canResize = false;
                }
            }
        }
 
        private void pictureForm_MouseUp(object sender, MouseEventArgs e)
        {
            canResize = false;
            resizingForm = false;
        }
    }
}
Всё масштабируется, всё прекрасно. НО! Дребезжание нижнего края формы сводит меня с ума!!! Пробовал использовать на форме DoubleBuffer = true, но результат тот же. Особо сильно это видно, когда при масштабировании резко дёргаешь мышью. Возможно ли это как-нибудь вылечить? Или всё бесполезно? Обратил внимание, в проводнике, при масштабировании, так же себя ведёт строка состояния...

Решение задачи: «Мерцание нижнего края формы при масштабировании за верхний край»

textual
Листинг программы
typeof(Control).GetProperty(@"DoubleBuffered", BindingFlags.NonPublic | BindingFlags.Instance).SetValue(pictureBox1, true, null);

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.9 из 5
Похожие ответы