窗体或控件的两种拖动方式
2014-06-11 09:47
183 查看
第一种
音量调节的示例
当然这种方法也可用在窗口拖动。
第二种
命名空间 using System.Runtime.InteropServices;
#region 窗体拖动
[DllImport("user32.dll")]
public static extern bool ReleaseCapture();
[DllImport("user32.dll")]
public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
/// <summary>
/// pa_top事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void pa_top_MouseDown(object sender, MouseEventArgs e)
{
ReleaseCapture();
SendMessage(this.Handle, 0x0112, 0xF012, 0);
}
#endregion
两种方式 都可以实现窗体和控件的拖动。
第二种方式适合窗体拖动。不过第二种方法和最大化功能配合使用,会出现问题。目前正在解决。如果有人知道 还望相告
音量调节的示例
#region 音量控制 private Point mouse_offset; private void pictureBox7_MouseDown(object sender, MouseEventArgs e) { mouse_offset = new Point(-e.X, -e.Y);// } private void pictureBox7_MouseMove(object sender, MouseEventArgs e) { ((Control)sender).Cursor = Cursors.Arrow;//设置拖动时鼠标箭头 if (e.Button == MouseButtons.Left) { Point mousePos = Control.MousePosition;//屏幕坐标 mousePos.Offset(mouse_offset.X, mouse_offset.Y);//设置偏移 mousePos.Y = PointToScreen(pictureBox7.Location).Y; Point mouse_New = ((Control)sender).Parent.PointToClient(mousePos); if (mouse_New.X < panel1.Location.X ) { mouse_New.X = panel1.Location.X; } if (mouse_New.X > panel1.Width + panel1.Location.X) { mouse_New.X = panel1.Width+ panel1.Location.X ; } ((Control)sender).Location = mouse_New; panel2.Width = mouse_New.X-panel1.Location.X; } } #endregion
当然这种方法也可用在窗口拖动。
第二种
命名空间 using System.Runtime.InteropServices;
#region 窗体拖动
[DllImport("user32.dll")]
public static extern bool ReleaseCapture();
[DllImport("user32.dll")]
public static extern bool SendMessage(IntPtr hwnd, int wMsg, int wParam, int lParam);
/// <summary>
/// pa_top事件
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void pa_top_MouseDown(object sender, MouseEventArgs e)
{
ReleaseCapture();
SendMessage(this.Handle, 0x0112, 0xF012, 0);
}
#endregion
两种方式 都可以实现窗体和控件的拖动。
第二种方式适合窗体拖动。不过第二种方法和最大化功能配合使用,会出现问题。目前正在解决。如果有人知道 还望相告
相关文章推荐
- 两种方式实现控件动态拖动效果比较
- 控件开发时两种JS嵌入资源方式的使用
- 控件开发时两种JS嵌入资源方式的使用方法
- C# 采用系统委托的方式处理线程内操作窗体控件
- C#基础系列:开发自己的窗体设计器(在容器上拖动鼠标增加控件)
- 通过鼠标任意拖动.NET Winform窗体中的控件
- 关于不同窗体之间的控件查询 - 方式一(静态的窗体数组)
- C#多线程操作控件的两种安全方式(委托方式和BackgroundWorker控件方式)
- 控件随窗体拖动而缩放
- c#中两种方法拖动没有边框的窗体
- 两种解析EDIT控件上文本的方式
- 控件开发时两种JS嵌入资源方式的使用方法
- C#基础系列:开发自己的窗体设计器(在容器上拖动鼠标增加控件)
- 【转载】窗体之间的控件拖动
- C# winform 实现(不规则)窗体或者控件的拖动
- C# 使用重载消息处理函数的方式,实现没有标题栏的窗体的拖动。
- 如何模拟一个象窗体一样的控件(标题栏、焦点、拖动、
- 通过鼠标任意拖动.NET Winform窗体中的控件
- 两种方式--使编辑控件的滚动条自动滚动
- 2.VC(custom)-两种解析EDIT控件上文本的方式