Управление кнопками програмно

285
05 апреля 2017, 12:56

Конвертировал код из vb.net на c#.

 private static Point MouseP = new Point(0, 0);
        private bool Cap = false;
        private int MoveHeight = 35;
        //private pos = 0;
        Rectangle MinBtn = new Rectangle(0, 0, 32, 25);
        Rectangle CloseBtn = new Rectangle(33, 0, 65, 25);
        int X;
        int Y;
        protected override void OnMouseDown(MouseEventArgs e)
        {
            base.OnMouseDown(e);
            if (e.Button == MouseButtons.Left & new Rectangle(0, 0, Width, MoveHeight).Contains(e.Location) & X < Width - 53)
            {
                Cap = true;
                MouseP = e.Location;
            }
            else
            {
                if (X > Width - 18 & X < Width - 8 & Y < 18 & Y > 8)
                {
                  // FindForm.Close();
                }
                else if (X > Width - 36 & X < Width - 25 & Y < 18 & Y > 8)
                {
                    if (FindForm.WindowState == FormWindowState.Maximized)
                    {
                        FindForm.WindowState = FormWindowState.Normal;
                    }
                    else
                    {
                        FindForm.WindowState = FormWindowState.Maximized;
                    } 
                }
                else if (X > Width - 52 & X < Width - 44 & Y < 18 & Y > 8)
                {
                    //FindForm.WindowState = FormWindowState.Minimized;
                }
            }
            GraphicsMeph.State = GraphicsMeph.MouseState.Down;
            Invalidate();
        }

Не понятный FindForm пытался заменить на this.WindowState, но выводит ошибку, что WindowState не существует

А так же:

protected override void OnMouseMove(MouseEventArgs e)
    {
        base.OnMouseMove(e);
        if (Cap)
        {
            Parent.Location = MousePosition - MouseP;
        }
        X = e.Location.X;
        Y = e.Location.Y;
        Invalidate();
    }

в строчке Parent.Location = MousePosition -

Оператор "-" не может применяться к операндам типа System.Drawing.Point и System.Drawing.Point

Как активировать кнопки (свернуть/развернуть/закрыть) программным способом, а так же решить проблему с перетаскиванием формы на неё в OnMouseMove

Answer 1
private Form FindForm()
{
  Control current = this;
  while (current != null && !(current is Form))
  {
    current = current.Parent;
  }
  return current as Form;
}
FindForm().WindowState = FormWindowState.Normal;
Vector v = Point.Subtract(MousePosition, MouseP);
Parent.Location = new Point(v.X, v.Y);
или проще
Parent.Location = new Point(MousePosition.X - MouseP.X, MousePosition.Y - MouseP.Y);
READ ALSO
Переехать с entity framework 4 на последний

Переехать с entity framework 4 на последний

Подскажите, как происходит переход с более раннего EF на более новый и какие трудности при этом могут возникнуть?

239
Как отсортировать файлы по дате в имени?

Как отсортировать файлы по дате в имени?

Есть 10 файлов в формате xlsНазвание у них dd

320