Переназначить действия для мышиных кнопок

Обсуждение вопросов импорта поддерживаемых форматов
Post Reply
Vic
Posts: 3
Joined: 16 Jun 2011, 22:12

Переназначить действия для мышиных кнопок

Post by Vic » 16 Jun 2011, 22:22

Всем доброго дня (утра, вечера, ночи).
Можно ли переназначить действия по умолчанию для кнопок мыши в CADViewerControl и если нельзя, есть ли в вышеупомянутом контроле программная функция Realtime Pan как на правой кнопке мыши по умолчанию?

Vic
Posts: 3
Joined: 16 Jun 2011, 22:12

Re: Переназначить действия для мышиных кнопок

Post by Vic » 21 Jun 2011, 00:03

Хм... Разобрался.

support
Posts: 3271
Joined: 30 Mar 2005, 11:36
Contact:

Re: Переназначить действия для мышиных кнопок

Post by support » 21 Jun 2011, 13:46

Здравствуйте.

CADViewerControl как и CADEditorControl не предусматривают произвольных обработчиков событий нажатия кнопок мыши. Для реализации собственных обработчиков событий рекомендуем использовать CADPictureBox. Однако вы также можете изменить обработку событий и для CADViewerControl. Cледующий код показывает (на примере CADViewerControl demo) как исключить в приложении, использующем CADViewerControl, панорамирование правой кнопкой мыши а также выбор и зуммирование левой кнопкой:

Code: Select all

public class MainForm : System.Windows.Forms.Form
{
    ...
    private CADImport.CADImportControls.CADViewerControl cadViewerControl1;
    private float LeftImagePosition;
    private float TopImagePosition;
    private float scale;
    ...

    private void InitializeComponent()
    {
        ...
        this.cadViewerControl1.Controls[1].MouseMove += new System.Windows.Forms.MouseEventHandler(this.cadViewerControl1_MouseMove);
        this.cadViewerControl1.Controls[1].MouseDown += new System.Windows.Forms.MouseEventHandler(this.cadViewerControl1_MouseDown);
        this.cadViewerControl1.Controls[1].MouseUp += new System.Windows.Forms.MouseEventHandler(this.cadViewerControl1_MouseUp);
        ...
    }

    private void cadViewerControl1_MouseDown(object sender, MouseEventArgs e)
    {
        LeftImagePosition = this.cadViewerControl1.LeftImagePosition;
        TopImagePosition = this.cadViewerControl1.TopImagePosition;
            
        if (e.Button == MouseButtons.Right)
            this.cadViewerControl1.Controls[1].Cursor = Cursors.Default;

        if (e.Button == MouseButtons.Left)
        {
            this.cadViewerControl1.Image.Selector.UndoSelect();
            scale = this.cadViewerControl1.ImageScale;
        }
    }

    private void cadViewerControl1_MouseUp(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Left)
        {
            this.cadViewerControl1.LeftImagePosition = LeftImagePosition;
            this.cadViewerControl1.TopImagePosition = TopImagePosition;
            this.cadViewerControl1.ImageScale = scale;
            this.cadViewerControl1.Invalidate();
            this.cadViewerControl1.Image.Selector.UndoSelect();
        }
    } 

    private void cadViewerControl1_MouseMove(object sender, MouseEventArgs e)
    {
        if (e.Button == MouseButtons.Right)
        {
            this.cadViewerControl1.LeftImagePosition = LeftImagePosition;
            this.cadViewerControl1.TopImagePosition = TopImagePosition;
        }
    }
}
В текущей версии события мыши срабатывают не на самом CADViewerControl, а на CADViewerControl.Controls[1], который является внутренним объектом CADPictureBox. В CADEditorControl аналогично можно использовать свойство PictureBox. Код вы можете дополнить по вашему усмотрению для реализации требуемого функционала.

Программной функции "RealTime Pan" контрол не предоставляет.

Александр.
Technical Support E-mail: support@cadsofttools.com
Chat support on Skype: cadsofttools.support

Vic
Posts: 3
Joined: 16 Jun 2011, 22:12

Re: Переназначить действия для мышиных кнопок

Post by Vic » 23 Jun 2011, 15:05

Спасибо за развернутый ответ.
Уже разобрался в прилагаемых примерах.

Post Reply