C# 鼠标移动WinForm窗体或者panel容器内的控件 移动虚线/实现虚线框来确定位置

1.用到的方法介绍

今天,根据领导指示指导移动容器内的控件,生成虚线框,使用

  1. ControlPaint.DrawReversibleFrame
  1. //
  2. // 摘要:
  3. // 在屏幕上的指定边界内,按指定背景色绘制处于指定状态的可逆框架。
  4. //
  5. // 参数:
  6. // rectangle:
  7. // 代表要绘制矩形的尺寸的 System.Drawing.Rectangle(采用屏幕坐标)。
  8. //
  9. // backColor:
  10. // 框架的背景的 System.Drawing.Color。
  11. //
  12. // style:
  13. // System.Windows.Forms.FrameStyle 值之一,它指定框架的样式。
  14. public static void DrawReversibleFrame(Rectangle rectangle, Color backColor, FrameStyle style);

2.程序运行效果

3.代码实现

  1. public Form1()
  2. {
  3. InitializeComponent();
  4. }
  5.  
  6. private Point downPoint;
  7. private Rectangle downRectangle;
  8. private Rectangle lastRectangle;
  9.  
  10. private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
  11. {
  12. if (e.Button != MouseButtons.Left) return;
  13.  
  14. downPoint = e.Location;
  15. downRectangle =new Rectangle(, , ((Control)sender).Width, pictureBox1.Height);
  16. downRectangle.Offset(((Control)sender).PointToScreen(new Point(, )));
  17. ControlPaint.DrawReversibleFrame(downRectangle, Color.White, FrameStyle.Thick);
  18.  
  19. lastRectangle = downRectangle;
  20. }
  21. private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
  22. {
  23. if (e.Button != MouseButtons.Left) return;
  24.  
  25. ControlPaint.DrawReversibleFrame(lastRectangle, Color.White, FrameStyle.Thick);
  26.  
  27. Rectangle rectangle = downRectangle;
  28. rectangle.Offset(e.X - downPoint.X, e.Y - downPoint.Y);
  29. ControlPaint.DrawReversibleFrame(rectangle, Color.White, FrameStyle.Thick);
  30.  
  31. lastRectangle = rectangle;
  32. }
  33. private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
  34. {
  35. if (e.Button != MouseButtons.Left) return;
  36.  
  37. ControlPaint.DrawReversibleFrame(lastRectangle, Color.White, FrameStyle.Thick);
  38.  
  39. pictureBox1.Location = new Point(
  40. ((Control)sender).Location.X + e.X - downPoint.X,
  41. ((Control)sender).Location.Y + e.Y - downPoint.Y);
  42. }

4.程序源代码工程文件下载

源代码工程文件下载

C# 鼠标移动Winform窗体内或者panel容器内的控件 显示虚线/实现虚线框来确定位置的更多相关文章

  1. winform快速开发平台 -> 快速绑定ComboBox数据控件

    通常我们在处理编辑窗体时.往往会遇到数据绑定.例如combobox控件绑定数据字典可能是我们经常用到的.然而在我的winform快速开发平台中我是如何处理这个频繁的操作呢? 首先,我们要绑定combo ...

  2. winform中button点击后再点击其他控件致使button失去焦点,此时button出现黑色边线,去掉黑色边线的方法

    winform中button点击后再点击其他控件致使button失去焦点,此时button出现黑色边线,去掉黑色边线的方法 button的FlatAppearence属性下,设置BorderSize= ...

  3. winform快速开发平台 -> 基础组件之分页控件

    一个项目控件主要由及部分的常用组件,当然本次介绍的是通用分页控件. 处理思想:我们在处理分页过程中主要是针对数据库操作. 一般情况主要是传递一些开始位置,当前页数,和数据总页数以及相关关联的业务逻辑. ...

  4. [转] WinForm自定义函数FindControl实现按名称查找控件

    原文地址 WinForm自定义函数FindControl实现按名称查找控件 本文所述实例实现WinForm自定义函数FindControl实现按名称查找控件的功能,在C#程序开发中有一定的实用价值. ...

  5. WPF背景透明内嵌WebBrowser不显示问题,即AllowsTransparency = true 和 Webbrowser 等控件显示冲突

    首先感谢两位先导者: 1. 解决 WPF AllowsTransparency = true 和 Webbrowser 等控件显示冲突 原文地址:https://www.cnblogs.com/zhi ...

  6. winform中如何在多线程中更新UI控件--ListView实时显示执行信息

    1.在winform中,所有对UI的操作,都得回到UI线程(主线程)上来,才不会报错 线程间操作无效: 从不是创建控件的线程访问它. 2.在winform中,允许通过Control.invoke对控件 ...

  7. winform项目中开发的一套UI控件库

    https://github.com/houyhea/winform-control-lib winform-control-lib 曾经在一个winform项目中开发的一套UI控件库 类图:  效果 ...

  8. c#在主窗体panel 容器内嵌入另一个窗体(子窗体)的实现

    主窗体:  子窗体: 把子窗体嵌入到主窗体的panel 右侧中: 代码: { public MainForm() { InitializeComponent(); } private void Clo ...

  9. winform导入导出excel,后台动态添加控件

    思路: 导入: 1,初始化一个OpenFileDialog类 (OpenFileDialog fileDialog = new OpenFileDialog();) 2, 获取用户选择文件的后缀名(s ...

随机推荐

  1. HDU 2002 计算球体积

    题目链接:HDU 2002 Description 根据输入的半径值,计算球的体积. Input 输入数据有多组,每组占一行,每行包括一个实数,表示球的半径. Output 输出对应的球的体积,对于每 ...

  2. 使用JfreeChart生成图表遇到的问题

    生成的图片不显示 需要在web.xml中配置一个指定的Servlet <servlet> <servlet-name>DisplayChart</servlet-name ...

  3. Java入门学习笔记

    Hello.java public class Hello { public static void main(String[] args) { System.out.println("He ...

  4. 如何将Powerdesign物理模型中的name复制成comment

    Option Explicit ValidationMode = True InteractiveMode = im_Batch Dim mdl ' the current model ' get t ...

  5. Centos7中ss命令安装

    一.简述 一般Centos会自带ss这个命令,如果没带,则需要安装. 二.安装命令 yum install iproute

  6. LeetCode: Gray Code [089]

    [题目] The gray code is a binary numeral system where two successive values differ in only one bit. Gi ...

  7. Visual Studio进行Web性能测试- Part II

    Visual Studio进行Web性能测试- Part II 2012-08-31 14:34 by 知平软件, 7557 阅读, 5 评论, 收藏, 编辑 原文作者:Ambily.raj 对于一个 ...

  8. C++ 字面量

    https://docs.microsoft.com/en-us/cpp/cpp/string-and-character-literals-cpp?view=vs-2017 C++ supports ...

  9. 12C - PDB archive file

    在unplug一个pdb的时候,如果将扩展名定义为.pdb,oracle就会创建一个.pdb归档文件.包含pdb数据文件和xml元数据文件的压缩文件.创建archive file之后,就不用分开拷贝数 ...

  10. 【转载】springboot四 全局异常处理

    http://tengj.top/2018/05/16/springboot13/ https://www.jb51.net/article/110533.htm