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

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

1.用到的方法介绍

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

 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(0, 0, ((Control)sender).Width, pictureBox1.Height);
16             downRectangle.Offset(((Control)sender).PointToScreen(new Point(0, 0)));
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.程序源代码工程文件下载

源代码工程文件下载

原文地址:https://www.cnblogs.com/JiYF/p/10112565.html

时间: 2024-11-14 13:29:22

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

winform_在panel里添加用户控件

相应的事件里: this.AddCtrlIntoPanel(new Ctrl1.UserControl1()); 在panel里添加用户控件的方法: private void AddCtrlIntoPanel(UserControl ctrl) { this.panel2.Controls.Clear(); this.panel2.Controls.Add(ctrl); ctrl.Dock = DockStyle.Fill; }

你知道吗,Flutter内置了10多种Button控件

注意:无特殊说明,Flutter版本及Dart版本如下: Flutter版本: 1.12.13+hotfix.5 Dart版本: 2.7.0 Flutter内置了10多种Button(按钮)类控件供我们使用,了解这些控件有助于提高我们的开发速度. RaisedButton RaisedButton是一个material风格"凸起"的按钮,基本用法: RaisedButton( child: Text('Button'), onPressed: (){ }, ) 效果: onPresse

Master内使用FindControl找不到控件的解决方案

0.问题描述:已经在XXX.Master文件中定义了控件 <asp:LinkButton ID="lnk_new_user_after" runat="server" OnClick="lnk_new_user_Click" Visible="false">新增用户</asp:LinkButton> 但是在XXX.Master对应的代码文件XXX.master.cs的protected void Pag

listview的gridview视图中,获取列中模板内的button按钮(找控件内的控件)

点击“间隙”,获取“间隙”旁边隐藏的减号按钮(本图片未显示出来) private void TextBlock_MouseDown_2(object sender, MouseButtonEventArgs e) { ContentPresenter contentPres = (sender as FrameworkElement).TemplatedParent as ContentPresenter; DataTemplate dTemplate = contentPres.Content

为什么日历控件放在panel无法显示出来

前言 以前一直没有做过c/s这块开发,最近一段时间,刚接触.当然winform自己肯定会,但是只是很早以前自己玩的时候弄弄.最近做的时候,很简单的一个效果,自己怎么也实现不出来,最后没事和一个哥们私下弄得时候发现了奥妙,哈哈,可能大家做过winform的都知道,但是还是分享一下. 需求 form窗体上,放一个groupbox控件,放一个datagridview控件,放一个panel控件.groupbox中放一个textbox控件,dock属性为top,panel中放一个日历控件,gridview

无边框窗体、后台创建控件、简单通讯

一.无边框窗体 1.控制按钮如何制作: 就是放置可以点击的控件,不局限于使用按钮或是什么别的,只要可以点击能触发点击事件就可以了 (1)美化一下的话那就可以把鼠标移入,移出,按下三个事件让按钮改变样式 (2)如何获取图片的相对路径 //鼠标移入时显示的图片 private void pictureBox1_MouseEnter(object sender, EventArgs e) { pictureBox1.BackgroundImage = Image.FromFile(Applicatio

Panel控件的使用

我们对控件进行分组的原因不外乎三个: 1.为了获得清晰的用户界面而将相关的窗体元素进行可视化分组. 2.编程分组,如对单选按钮进行分组. 3.为了在设计时将多个控件作为一个单元来移动. 在vb.net中,有GroupBox.Panel.TabControl这三个控件可以实现上面所提到的三个分组目的,所以我们称它们为分组控件. 前面我们了解了GroupBox(控件组)控件(vb.net入门——分组控件:GroupBox控件的使用)的使用,这里我们将来看看下怎么使用Panel(也称面板)控件.实际上

[WinForm] 使用反射将业务对象绑定到窗体或控件容器

在WebForm中,可以使用反射将业务对象绑定到 ASP.NET 窗体控件.最近做Winform项目,也参考WebForm中的代码实现同样的功能.     Winform没有提供类似WebForm中的FindControl方法,我于是用遍历控件的方式,写了一个类似WebForm中的这个方法,考虑到Winform中的很多控件放在Label.TabControl中,方法采用了递归的方式.     Winform和Winform的控件也有些区别,如在Winform中,DateTimePicker取值是

C#遍历窗体控件(原文出自http://www.liangshunet.com/ca/201403/286434593.htm)

一.C#遍历窗体控件 主要遍历属于窗体(Form)的控件(Controls),假如窗体中有 Panel.Button 和 TextBox 控件,遍历代码如下: /// <summary> /// Winform C#遍历窗体控件 /// </summary> /// <param name="ctrlName">控件名称</param> public void ForeachFormControls(string ctrlName) {