C#切换标签(tabcontrol),同时拖动水印picbox并将鼠标悬停在标签

时间:2015-11-11 18:09:56

标签: c# picturebox tabcontrol

在我的一篇帖子(下面的链接)中,我询问如何在拖动treenode并将鼠标悬停在标签上时更改标签。现在我想要做同样的事情,除了在一个标签内的另一个图片框(父母说话)内的水印picbox。有两个标签页,两个“父”picbox(一个foreach标签)和一个动态添加的picbox在第一个标签上。有关更多详细信息,请阅读下面的编号列表,您需要的代码位于链接下方。

  1. 两个标签中的父级picbox在高度和宽度方面均最大化,以适应整个标签页(不是标题区域)。代码中的水印图像大小如下。水印也是动态添加的。

  2. 旧帖子的半副本失败的原因是因为从未调用过水印拖动输入事件。这意味着在拖动图片并将鼠标悬停在其中一个标签上之后,标签永远不会打开。虽然我不能100%确定是否应该使用与picbox相同的事件。

  3. 我想知道如何在拖动picbox并将鼠标悬停在选项卡上时打开标签,并能够将水印图像放在标签页#2中的第二个父picbox上,并删除标签页1中的水印图像有一个相同的水印图像的副本。

  4. C# Switch tabs(tabcontrol) while dragging and hovering over a tab

    指向mousePos;         bool Movedummytonewtabpic = false;

        private void Form1_Load(object sender, EventArgs e)
        {
            PictureBox picdrag1 = new PictureBox();
            picdrag1.Name = "dummytest";
            picdrag1.Image = Properties.Resources._previmg;
            picdrag1.Size = new Size(52, 42);
            picdrag1.SizeMode = PictureBoxSizeMode.AutoSize;
            picdrag1.MouseDown += picdrag1_MouseDown;
            picdrag1.MouseMove += picdrag1_MouseMove;
            picdrag1.DragEnter += picdrag1_DragEnter;
            picdrag1.Location = new Point(168, 151);   
            pictureBox1.Controls.Add(picdrag1);
        }
    
        private void picdrag1_DragEnter(object sender, DragEventArgs e)
        {
    
            //DragDropEffects.
            e.Effect = DragDropEffects.Copy;
            Movedummytonewtabpic = true;
        }
    
        private void picdrag1_MouseDown(object sender, MouseEventArgs e)
        {
            mousePos = e.Location;
        }
    
        private void picdrag1_MouseMove(object sender, MouseEventArgs e)
        {
            if (e.Button == MouseButtons.Left)
            {
                int dx = e.X - mousePos.X;
                int dy = e.Y - mousePos.Y;
                pictureBox1.Location = new Point(pictureBox1.Left + dx, pictureBox1.Top + dy);
            }
        }
    
        private void tabControl1_DragOver(object sender, DragEventArgs e)
        {
            if (Movedummytonewtabpic == true )
            {
                //e.Effect = DragDropEffects.All;
    
                Point clientPoint = tabControl1.PointToClient(new Point(e.X, e.Y));
    
                for (int i = 0; i < tabControl1.TabCount; i++)
                {
                    if (tabControl1.GetTabRect(i).Contains(clientPoint) && tabControl1.SelectedIndex != i)
                    {
                        tabControl1.SelectedIndex = i;
                    }
                }
            }
        }
    

0 个答案:

没有答案