Windows Develop Bookmark and Share   
 index > Windows Forms General > MouseMove work badly?
 

MouseMove work badly?

Hello,
I have a problem with MouseEventHandler... I don't know why it doesn't work, why I cannot move the Panel?

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace Test
{
    public partial class Form1 : Form
    {
        private int objectType;
        private Graphics g;
        private int clickOffsetX, clickOffsetY;
        private bool isDragging = false;

        public Form1()
        {
            InitializeComponent();
            g = pnlMain.CreateGraphics();
        }

        private void Form1_Load(object sender, System.EventArgs e)
        {
            
        }

        private void btnTable_Click(object sender, EventArgs e)
        {
            objectType = 1;
        }

        private void pnlMain_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
        {
            switch (objectType)
            {
                case 1:
                   // g.DrawRectangle(new Pen(Color.Black, 1), e.X-1, e.Y-1, 101, 101);
                    //g.FillRectangle(new SolidBrush(Color.White), e.X, e.Y, 100, 100);
                    //objectType = 0;
                    break;
                case 2:
                    Panel p1 = new Panel();
                    p1.Size = new System.Drawing.Size(100,150);


                    p1.BackColor = Color.White;
                    p1.Location = new Point(e.X, e.Y);
                    p1.BorderStyle = BorderStyle.FixedSingle;
                    p1.AllowDrop = true;
                    
                    p1.MouseDown += new MouseEventHandler(MouseDown);
                    p1.MouseDown += new MouseEventHandler(MouseMove);
                    p1.MouseDown += new MouseEventHandler(MouseUp);
                    pnlMain.Controls.Add(p1);

                    objectType = 0;
                    break;
            }
        }

        private void pnlMain_Paint(object sender, PaintEventArgs e)
        {
            //System.Windows.Forms.MessageBox.Show("");
        }

        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            objectType = 2;
        }

        private void Form1_Load_1(object sender, EventArgs e)
        {

        }

        private void MouseDown(object sender, MouseEventArgs e)
        {
            isDragging = true;
            clickOffsetX = e.X;
            clickOffsetY = e.Y;
            Console.WriteLine("MouseDown");
        }

        private void MouseUp(object sender, MouseEventArgs e)
        {
            isDragging = false;
            Console.WriteLine("MouseUp");
        }

        private void MouseMove(object sender, MouseEventArgs e)
        {
            if (isDragging == true){

                Panel p1 = new Panel();
                p1 = (Panel)sender;

                p1.BringToFront();

                p1.Left = e.X + p1.Left - clickOffsetX;
                p1.Top = e.Y + p1.Top - clickOffsetY;
                p1.BackColor = Color.Blue;
                txtCursor.Text = (e.X + p1.Left - clickOffsetX).ToString() + " " + (e.Y + p1.Top - clickOffsetY).ToString();
                Console.WriteLine("MouseMove");
            }

            this.OnMouseMove(e);
        }

        private void toolStripButton2_Click(object sender, EventArgs e)
        {
            objectType = 3;
        }

       
    }
}

piotrfrompj  Sunday, September 20, 2009 12:00 PM
Messy code. Chief problem is that you register the MouseDown event three times.

Hans Passant.
  • Marked As Answer bypiotrfrompj Sunday, September 20, 2009 8:44 PM
  •  
nobugz  Sunday, September 20, 2009 4:52 PM
Messy code. Chief problem is that you register the MouseDown event three times.

Hans Passant.
  • Marked As Answer bypiotrfrompj Sunday, September 20, 2009 8:44 PM
  •  
nobugz  Sunday, September 20, 2009 4:52 PM
Messy code. Chief problem is that you register the MouseDown event three times.

Hans Passant.
Thanks!
It's works.

"Messy code" - it,s my first "test" application in C# :)
piotrfrompj  Sunday, September 20, 2009 8:47 PM

You can use google to search for other answers

Custom Search

More Threads

• Enter key on a DataGridViewTextBox control
• please give one example on ServiceProvider.GetService() to get the selected Folder or File name in WindowsExplorer using c#.net.
• Webservice ProgressBar - Sending Progress?
• Highlight text in MessageBox
• What does the 'tilde' + 1 mean? (eg C:\Docume~1\)
• Zorder and DrawToBitmap problem
• How can I use double buffering?
• MDI app - can the assemblies in my solution access MDI's objects?
• Problem with Mdi forms and Show method
• Winform 3.5 ????