Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Drag and drop (button,textbox и т.д.) или как сделать toolbox?

67K
03 марта 2011 года
vjick
2 / / 23.02.2011
Доброго времени суток.

Нужно написать аналог toolbox и Form Design(режим редактирования формы).
Вообщем, смоделировать накидывание элементов на форму + нужна возможность изменять их свойста, такие как size, name, caption и т.д..

На данный момент есть мало.
Сделал splitcontainer. Перетаскиваю из одного в другой кнопку.
Но есть проблемка.

Вообщем, делаю так:
1) При перетаскивании кнопки из панели 1 в панель 2 кнопки, создаю на панели 2 копию кнопки.

Код:
private void button_DragEnter(object sender, DragEventArgs e)
        {
            if (e.Data.GetDataPresent(DataFormats.StringFormat))
            {
                e.Effect = DragDropEffects.Copy;
                this.button2 = new System.Windows.Forms.Button();
                this.splitContainer2.Panel1.Controls.Add(this.button2);
                this.button2.Location = new System.Drawing.Point(e.X, e.Y);
                this.button2.Name = "button2";
                this.button2.Size = new System.Drawing.Size(75, 23);
                this.button2.TabIndex = 4;
                this.button2.Text = "button2";
                this.button2.UseVisualStyleBackColor = true;
                this.splitContainer1.Panel2.Controls.Add(button2);
               
            }
            else
            {
                e.Effect = DragDropEffects.None;
            }
        }

2) Потом нужно отслеживать позицию мыши, для прорисовки перемещения элемента по форме. Тут и появляется проблема. Как определить позицию мыши в окне формы?
 
Код:
private void myDragOver(object sender, DragEventArgs e)
. Как видно, в функцию myDragOver передается DragEventArgs e.
e.X и e.Y. Как я понял, передает позицию курсора относительно монитора, а не элемента, над которым мышка. Использовать событие MouseMove как-то не красиво =).

В итоге вопрос: как прорисовать изменение позиции элемента(кнопки в данном случае)?

Ну и по поводу основной задачи, есть какие-нибудь предложения или примеры выполнения готовые? Хотя бы ссылку на теоретическую часть. Буду очень признателен, так как делаю диплом, и хочется сделать красиво =)))
278
03 марта 2011 года
Alexander92
1.1K / / 04.08.2008
[QUOTE=vjick]e.X и e.Y. Как я понял, передает позицию курсора относительно монитора, а не элемента, над которым мышка[/QUOTE]

ScreenToClient, ClientToScreen.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог