RAD of canvas панель инструментов приложение winforms - PullRequest
1 голос
/ 30 марта 2012

Я хочу создать приложение, в котором конечный пользователь может перетаскивать элементы управления на форму во время выполнения. Я много искал по этой теме, но не уверен, что именно этот тип приложения называется. Я искал приложение холста, приложение панели инструментов, приложение компонента, виджеты, визуальное программирование и создание диаграмм. Мое видение немного отличается от интерфейса в стиле Visual Studio, потому что вместо окон я представляю, что каждый компонент можно перетащить на поверхность. Я видел, как это достигается с помощью макетов сетки или макетов стиля холста. Мне действительно не нужны «соединители», как это было бы при создании диаграмм, но мне нужны «поверхностные» возможности.

Мои вопросы:

  1. Существует ли конкретное имя для приложения, которое позволяет пользователю перетаскивать элементы управления на поверхность во время выполнения?
  2. Какие сторонние, открытые и коммерческие компоненты предоставляют эту возможность для WInforms?
  3. Какие сторонние, открытые и коммерческие компоненты предоставляют такую ​​возможность для WPF?
  4. У меня нет опыта работы в WPF. Это «встроенная» возможность Canvas?

1 Ответ

0 голосов
/ 01 апреля 2012

В Winforms можно создать Canvas-подобную поверхность / структуру, добавив обработчики событий к элементам управления при их нажатии, а затем установив местоположение элемента управления в текущее местоположение мыши, добавив обработчик события в событие MouseMove для формы.

Пример кода:

    bool isDraggable = true;
    private void mycontrolClick(object sender, EventArgs e)
    {
        isDraggable = !isDraggable;           
    }

    private void Form_MouseMove(object sender, MouseEventArgs e)
    {
        if (isDraggable)
        {

            Point newLocation = new Point(e.X, e.Y);
            myControl.Location = newLocation;
        }
    }

Дополнительные шаги будут состоять в том, чтобы добавить перетаскиваемый значок (тест на попадание) в элемент управления для этой цели (или режим) и, возможно, некоторую форму обнаружения столкновений, такую ​​как ограничивающий прямоугольник, чтобы элементы управления выдвигали друг друга вместо перезаписи. Последним шагом будет добавление подпрограммы сериализации для сохранения местоположений холста. Кроме того, может потребоваться всплыть события / события мыши.

Другим решением будет создание традиционного приложения MDI Winforms.

http://msdn.microsoft.com/en-us/library/aa984330%28v=vs.71%29.aspx

Преимущество использования структуры Canvas состоит в том, что отдельные элементы управления могут быть нарисованы на заказ и, таким образом, «облегчены» (с точки зрения недвижимости) по сравнению с использованием контейнера MDI. Можно даже использовать режим разработки, чтобы расположить панель мониторинга, а затем переключиться в режим выполнения.

...