在我的一篇帖子(下面的链接)中,我询问如何在拖动treenode并将鼠标悬停在标签上时更改标签。现在我想要做同样的事情,除了在一个标签内的另一个图片框(父母说话)内的水印picbox。有两个标签页,两个“父”picbox(一个foreach标签)和一个动态添加的picbox在第一个标签上。有关更多详细信息,请阅读下面的编号列表,您需要的代码位于链接下方。
两个标签中的父级picbox在高度和宽度方面均最大化,以适应整个标签页(不是标题区域)。代码中的水印图像大小如下。水印也是动态添加的。
旧帖子的半副本失败的原因是因为从未调用过水印拖动输入事件。这意味着在拖动图片并将鼠标悬停在其中一个标签上之后,标签永远不会打开。虽然我不能100%确定是否应该使用与picbox相同的事件。
我想知道如何在拖动picbox并将鼠标悬停在选项卡上时打开标签,并能够将水印图像放在标签页#2中的第二个父picbox上,并删除标签页1中的水印图像有一个相同的水印图像的副本。
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;
}
}
}
}