Перемещение и изменение размера контрола RunTime

Nukutu

Добрый день. Я хочу сделать для пользователя возможность перемещать контрол по форме и изменять размер контрола во время выполнения программы. В идеале то, что делает Visual Studio 2010, когда создаешь контрол на форме и редактируешь его размер и позицию. То есть, чтобы пользователь видел изменение курсора при возможности перемещения или изменения размера, а также чтобы видел рамку редактирования как в Visual Studio 2010.Есть ли подобные функции в .NET? Или надо самому создавать?
4 ответа

Nukutu

То есть, чтобы пользователь видел изменение курсора при возможности перемещения
1) выберите контрол 2) откройте его свойста 3) поле Cursor (изменяется его) 4) если хотите при перемещении,то откройте событие mause Move и там пропишите: КОНТРОЛ.Cursor= No;//(No, Default и тд и тп)
или изменения размера, а также
Свойства контрола width, height, top, left
чтобы видел рамку редактирования как в Visual Studio 2010.
C помощью graphics рисуйте прямоугольник вокруг контрола(координаты контрола используйте).


Nukutu

перемещение на примере pictureBox
bool canMove = false;
        Point p;
        
        private void Form1_MouseLeave(object sender, EventArgs e)
        {
            canMove = false;
        }           
 
        private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
        {
            canMove = true;
            p = e.Location;            
        }
 
        private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
        {
            canMove = false;            
        }
 
        private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
        {
            if (canMove)
            {
                pic = (PictureBox)sender;
                pic.Top += e.Y - p.Y;
                pic.Left += e.X - p.X;                
            }
        }


Nukutu

перемещение на примере pictureBox
bool canMove = false;
        Point p;
        
        private void Form1_MouseLeave(object sender, EventArgs e)
        {
            canMove = false;
        }           
 
        private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
        {
            canMove = true;
            p = e.Location;            
        }
 
        private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
        {
            canMove = false;            
        }
 
        private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
        {
            if (canMove)
            {
                pic = (PictureBox)sender;
                pic.Top += e.Y - p.Y;
                pic.Left += e.X - p.X;                
            }
        }
А как ускорить разработку для сотни контролов? Писать свои UserControl?


Nukutu

А как ускорить разработку для сотни контролов? Писать свои UserControl?
Если я правильно понял вопрос, то да. Нужно создать свой контрол унаследованный в данном случае от PictureBox и заранее определить ему указанные события.