对于第一个问题,设置一个标志位
为控件加入鼠标按下事件
修改标志位
鼠标移动事件(判断标志位)
鼠标弹开事件
再次修改标志位private System.Windows.Forms.Label label1;
Point pLabel1Down = new Point(); //记录鼠标点击时的点坐标
bool bIfMove = false;
private void label1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
pLabel1Down.X = e.X;
pLabel1Down.Y = e.Y;
bIfMove = true;
}
private void label1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
if(bIfMove == true)
{
this.label1.Location = new Point(e.X+label1.Left-pLabel1Down.X,e.Y+label1.Top-pLabel1Down.Y);
}
}
private void label1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
if(bIfMove == true)
{
this.label1.Location = new Point(e.X+label1.Left-pLabel1Down.X,e.Y+label1.Top-pLabel1Down.Y);
bIfMove = false;
}
}
为控件加入鼠标按下事件
修改标志位
鼠标移动事件(判断标志位)
鼠标弹开事件
再次修改标志位private System.Windows.Forms.Label label1;
Point pLabel1Down = new Point(); //记录鼠标点击时的点坐标
bool bIfMove = false;
private void label1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{
pLabel1Down.X = e.X;
pLabel1Down.Y = e.Y;
bIfMove = true;
}
private void label1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
if(bIfMove == true)
{
this.label1.Location = new Point(e.X+label1.Left-pLabel1Down.X,e.Y+label1.Top-pLabel1Down.Y);
}
}
private void label1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
{
if(bIfMove == true)
{
this.label1.Location = new Point(e.X+label1.Left-pLabel1Down.X,e.Y+label1.Top-pLabel1Down.Y);
bIfMove = false;
}
}
解决方案 »
- C#/.NET中@的用方法
- TextBox 显示上标(#),或TextBox莫认上标(#)
- Remoting如何调用远程的DLL
- 在C#下如何实现类似于Java中卡片式布局的效果?
- 用不了Server.MapPath()这是为什么呢?
- 开发大型ERP系统是用net remoting作分布式开发还是使用普通三层结构开发呢?他们的优劣何在?
- attribute属性的问题。
- 我在C#下用到数据库时要比较两个时间日期类型字段的大小,请问怎么比较啊?
- 那里有《 C# 入门经典》这本书下载啊
- 请问!?有谁用过ActiveMdiChild对MDI的当前子窗体中的方法进行调用!
- 如何去掉TreeViewer的横向滚动条
- 从sqlserver里取出的日期怎么可以显示精确到秒么?
那怎么判断在这一刻用户按下了左键?
也就是怎么区分MouseEnter和MouseMove呢?
也就是说,
MouseEnter就是在鼠标经过边界的那个像素上时起作用,这个时候我即使设了让鼠标的形状改变,也根本不起作用啊...
MouseEnter里:if (e.Button == MouseButtons.Left) //按下左键
用户移动控件:
先定义两个窗体级变量 X,Y (int型)
通过移动lblNewNotice来移动panel.
也可自已移动自已。private void lblNewNotice_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
{ //用于移动控件时
X = e.X;
Y = e.Y;
}private void lblNewNotice_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e)
{
if (e.Button == MouseButtons.Left)
{
this.panel.Top = this.panel.Top +( e.Y -Y);
this.panel.Left = this.panel.Left + (e.X -X);
}
}
怎么使用 if (e.Button == MouseButtons.Left) //按下左键 啊在MouseEnter事件里怎么写啊