关于C#移动动态添加的控件的问题。

snow6617 2009-03-23 01:51:10
我做了一个画图工具,单击button后,再单击作图区的panel控件,即完成在panel上添加一个label,label上显示的图案是对应按钮的图案。现想要完成鼠标左键在添加的label控件上方按住不放的时候,显示一个和该label同样大小的虚线框,同时隐藏掉label,拖动的时候依然持续显示该虚线框,拖动带对应的位置,松开鼠标左键后,虚线框消失,之前隐藏的label控件在当前鼠标的位置处再次显示出来。

请教各位大侠,该如何排列鼠标事件,请给个方案,谢谢。。。
...全文
117 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
dyshadow 2009-03-23
  • 打赏
  • 举报
回复


public partial class Form1 : Form
{
Point offSet = new Point();
Rectangle labelFrame;
Point mousePos = new Point();
public Form1()
{
InitializeComponent();
}

private void lblLabelToMove_MouseDown(object sender, MouseEventArgs e)
{
offSet = new Point(e.X, e.Y);
lblLabelToMove.Visible = false;
labelFrame = new Rectangle(lblLabelToMove.Location, lblLabelToMove.Size);
}

private void Form1_Paint(object sender, PaintEventArgs e)
{
if (lblLabelToMove.Visible)
return;
Pen penDrawer = new Pen(Color.Black);
penDrawer.DashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
penDrawer.DashCap = System.Drawing.Drawing2D.DashCap.Flat;

Rectangle rectToDraw = new Rectangle(mousePos.X - offSet.X, mousePos.Y - offSet.Y, labelFrame.Width, labelFrame.Height);

e.Graphics.DrawRectangle(penDrawer, rectToDraw);

}

private void Form1_MouseMove(object sender, MouseEventArgs e)
{
mousePos = e.Location;
this.Invalidate();

}

private void Form1_MouseUp(object sender, MouseEventArgs e)
{
lblLabelToMove.Location = new Point(mousePos.X - offSet.X, mousePos.Y - offSet.Y);
lblLabelToMove.Visible = true;

}

}




做的不是很好,不过应该可以作为参考了。
compleat 2009-03-23
  • 打赏
  • 举报
回复
帮顶。JF

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧