Custom Mouse Icon C#

I have a listbox full of camera names. When I drag a name from the listbox onto a Panel I have it opening up a new (smaller) panel which then begins to display video. You can have as many windows open in the primary panel as desired. The problem is that when you have multiple cameras open its hard to position a new camera just right. What I want to do is when I drag over the primary panel I want a rectangle to be drawn that follows my mouse around until I let go, so I can see where the video will be exactly displayed. The panel is needs to be 240, 180 pixels. If anyone could provide c# code that accomplishes this I will reward them the 500 points.
Pretzel_JesusAsked:
Who is Participating?
 
Mike TomlinsonConnect With a Mentor Middle School Assistant TeacherCommented:
Something like this should get you started:
    public partial class Form1 : Form
    {
 
        private int CursorWidth = 240;
        private int CursorHeight = 180;
 
        private void listBox1_MouseMove(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                int index = listBox1.SelectedIndex;
                if (index != -1)
                {
                    listBox1.DoDragDrop(new DataObject("Camera", listBox1.Items[index].ToString()), DragDropEffects.All);
                }
            }
        }
 
        private void panel1_DragEnter(object sender, DragEventArgs e)
        {
            e.Effect = e.Data.GetDataPresent("Camera") ? DragDropEffects.All : DragDropEffects.None;
        }
 
        private void listBox1_GiveFeedback(object sender, GiveFeedbackEventArgs e)
        {
            e.UseDefaultCursors = false;
            Bitmap bmp = new Bitmap(CursorWidth, CursorHeight);
            Graphics g = Graphics.FromImage(bmp);
            g.Clear(Color.Red);
            g.Dispose();
            panel1.Cursor = new Cursor(bmp.GetHicon());
        }
 
        private void panel1_DragDrop(object sender, DragEventArgs e)
        {
            PictureBox pb = new PictureBox();
            pb.BorderStyle = BorderStyle.FixedSingle;
            Point pt = panel1.PointToClient(Cursor.Position);
            pt.Offset(-CursorWidth/2, -CursorHeight/2);
            pb.Location = pt;
            pb.Size = new Size(240, 180);
            panel1.Controls.Add(pb);
            panel1.Cursor = Cursors.Default;
        }
 
    }

Open in new window

0
 
Pretzel_JesusAuthor Commented:
Ok I see what you are doing here. Good idea. This partially works. I see the box appear exactly as I wanted, but it doesnt leave once I let go of the mouse button. How do I make it revert to the normal mousebutton once the dragging has been completed?
0
 
Pretzel_JesusAuthor Commented:
Actually I missed a line of code. Your code worked perfectly. Thanks!
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.