Изменение размера форм Windows

У меня есть форма с FormBorderStyle, для которой установлено значение Sizable. Это создает захват в правом нижнем углу. Единственный способ изменить размер окна — навести указатель мыши точно на край. Мне интересно, есть ли способ изменить размер курсора, чтобы он мог изменять размер, когда пользователь наводит указатель мыши на рукоятку, или могу ли я увеличить диапазон, в котором он позволит вам изменять размер на краю, чтобы вы не должны быть настолько точны с вашим местоположением мыши.


person user1427105    schedule 29.05.2015    source источник


Ответы (2)


Вот ссылка на аналогичный вопрос SO. У этого парня нет границ, поэтому вам, возможно, придется сделать это немного по-другому, но он должен дать вам направление, куда идти. Я переустановлю его код здесь для завершения:

  public partial class Form1 : Form {
    public Form1() {
      InitializeComponent();
      this.FormBorderStyle = FormBorderStyle.None;
      this.DoubleBuffered = true;
      this.SetStyle(ControlStyles.ResizeRedraw, true);
    }
    private const int cGrip = 16;      // Grip size
    private const int cCaption = 32;   // Caption bar height;

    protected override void OnPaint(PaintEventArgs e) {
      Rectangle rc = new Rectangle(this.ClientSize.Width - cGrip, this.ClientSize.Height - cGrip, cGrip, cGrip);
      ControlPaint.DrawSizeGrip(e.Graphics, this.BackColor, rc);
      rc = new Rectangle(0, 0, this.ClientSize.Width, cCaption);
      e.Graphics.FillRectangle(Brushes.DarkBlue, rc);
    }

    protected override void WndProc(ref Message m) {
      if (m.Msg == 0x84) {  // Trap WM_NCHITTEST
        Point pos = new Point(m.LParam.ToInt32() & 0xffff, m.LParam.ToInt32() >> 16);
        pos = this.PointToClient(pos);
        if (pos.Y < cCaption) {
          m.Result = (IntPtr)2;  // HTCAPTION
          return;
        }
        if (pos.X >= this.ClientSize.Width - cGrip && pos.Y >= this.ClientSize.Height - cGrip) {
          m.Result = (IntPtr)17; // HTBOTTOMRIGHT
          return;
        }
      }
      base.WndProc(ref m);
    }
  }
person Icemanind    schedule 29.05.2015

попробуй это

yourObject.Cursor = Cursors.SizeAll;

Подробнее на этом сайте: MSDN

person H. Pauwelyn    schedule 29.05.2015
comment
Это только изменит его курсор на курсор изменения размера, но фактически не изменит размер формы. - person Icemanind; 29.05.2015