WindowsForm移动一个没有标题栏的窗口的方法
在WinForm程序中,要移动没有标题栏的窗口,基本的实现思路是监听需要拖动窗口内的控件的鼠标事件,然后将鼠标位置发送给窗口进行相应的位移就可以了。通过借用Windows API也可以很容易实现这一点,比如像下面这样。
public class Win32Api { public const int WM_SYSCOMMAND = 0x112; public const int SC_DRAGMOVE = 0xF012; [DllImport("user32.Dll", EntryPoint = "ReleaseCapture")] public extern static void ReleaseCapture(); // 鼠标捕获 [DllImport("user32.Dll", EntryPoint = "SendMessage")] public extern static void SendMessage(IntPtr hWnd, int wMsg, int wParam, int lParam); // 将消息发送给指定的窗口 } private void pnlHeader_MouseDown(object sender, MouseEventArgs e) { Win32Api.ReleaseCapture(); Win32Api.SendMessage(this.Handle, Win32Api.WM_SYSCOMMAND, Win32Api.SC_DRAGMOVE, 0); }
当然,你还可以向这样向窗口发送消息,来实现拖动自定义标题栏移动窗口
public const int WM_NCLBUTTONDOWN = 0x00A1; public const int HTCAPTION = 2; private void pnlHeader_MouseDown(object sender, MouseEventArgs e) { if (e.Button == MouseButtons.Left) { // 释放控件已捕获的鼠标 pnlHeader.Capture = false; // 创建并发送WM_NCLBUTTONDOWN消息 Message msg = Message.Create(this.Handle, Win32Api.WM_NCLBUTTONDOWN, new IntPtr(Win32Api.HTCAPTION), IntPtr.Zero); this.DefWndProc(ref msg); } }
以上就是WindowsForm移动一个没有标题栏的窗口的方法的详细内容,更多关于WindowsForm 移动窗口的资料请关注我们其它相关文章!
相关推荐
-
WindowsForm实现TextBox占位符Placeholder提示功能
在WinForm程序中,实现TextBox文本输入框占位符的方式也很多,最常用的是方式基于Windows Api SendMessage函数发送EM_SETCUEBANNER消息,或者通过TextBox自带的焦点事件处理. SendMessage函数实现 创建一个继承TextBox的ZhmTextBox输入框控件,新增Placeholder属性,在Placeholder的set方法中发送EM_SETCUEBANNER消息 public class ZhmTextBox: TextBox { pr
-
WindowsForm实现警告消息框的实例代码
警告消息框主要是用来向用户户展示诸如警告.异常.完成和提示消息.一般实现的效果就是从系统窗口右下角弹出,然后加上些简单的显示和消失的动画. 创建警告框窗口 首先我们创建一个警告框窗口(Form),将窗口设置为无边框(FormBoderStyle=None),添加上图片和内容显示控件 创建好警告框后,我们先让他能够从窗口右下角显示出来, public partial class AlertMessageForm : Form { public AlertMessageForm() { Initia
-
如何用WindowsForm给窗口添加一些简单的动画效果
在显示或者隐藏窗口的时候,可以利用Windows API中的AnimateWindow函数实现一些特殊的效果.主要的动画类型有四种:滚动.幻灯片.折叠或展开和alpha混合渐变. 窗口动画效果 首先定义动画工具类,引入AnimateWindow函数. public class WindowsEffects { public const int AW_ACTIVATE = 0x00020000; // 激活窗口.不要在AW_HIDE中使用此值. public const int AW_BLEND
-
3种方法实现WindowsForm切换窗口
在Windows Form平台下实现窗口跳转,常见的有以下几种方式,比如通过Show/ShowDialog方法显示新的窗口,通过多文档界面(MDI)在父窗口中加载子窗口,或者是通关过在窗口中动态加载自定义控件,比如通过将窗口中的Panel控件作为容器,将一些自定义元素作为视图界面控件,动态加载到Panel控件中.下面我们将简单介绍这几种方式 Show/ShowDialog 通过这两种方法可以很简单的实现窗口跳转, Home home = new Home(); home.Show(); Home
-
C# WindowsForm程序同时启动多个窗口类
C# WindowsForm程序同时启动多个窗口类,具体内容如下 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace MVCProject { /// <summary> /// 多窗口同时启动类 /// <remarks>继承A
-
如何让WindowsForm缩小到系统匣过程详解
如何让windowsForm能像MSN一样缩小后会跑到右下方的系统匣内, 只要利用NotifyIcon就可以做到相同的功能,MSDN NotifyIcon组件说明 首先先开启一个windowsForm项目,在工具栏将NotifyIcon拉到windowsForm上. 接着先为NotifyIcon指定Icon和Text,就是在系统匣会出现的小图和鼠标移过去时出现的文字. 执行结果 如果要在窗口缩小时,只显示在系统匣显示, 反之则变成只显示在工作列,就必须要在Form的SizeChanged事件做控
-
WindowsForm移动一个没有标题栏的窗口的方法
在WinForm程序中,要移动没有标题栏的窗口,基本的实现思路是监听需要拖动窗口内的控件的鼠标事件,然后将鼠标位置发送给窗口进行相应的位移就可以了.通过借用Windows API也可以很容易实现这一点,比如像下面这样. public class Win32Api { public const int WM_SYSCOMMAND = 0x112; public const int SC_DRAGMOVE = 0xF012; [DllImport("user32.Dll", EntryPo
-
创建一个在标题栏中没有“关闭”按钮的 HTA
问: 您好,脚本专家!如何创建一个在标题栏中没有"关闭"按钮的 HTA? -- AK 答: 您好,AK.您知道,您的问题让我们陷入了道德和伦理的窘境.毕竟,假如我们给出此问题的答案:这个世界就有可能突然被大量无法关闭的 HTA 所淹没.在我们的眼前会出现这样一幅画面:无法关闭又不能停止的 HTA 疯狂地横扫整个陆地,并吞食沿途的所有系统资源.而我们脚本专家,将要对此负责.我们只是觉得无法在良心上背负这样一条的罪责. 但是,在我们的的良心上再多加一条罪责又会有什么不同呢?明确这一点后,我
-
javascript实现点击按钮弹出一个可关闭层窗口同时网页背景变灰的方法
本文实例讲述了javascript实现点击按钮弹出一个可关闭层窗口同时网页背景变灰的方法.分享给大家供大家参考.具体分析如下: 这里点击按钮后,弹出一个可关闭的层窗口,随之网页背景变灰,在QQ网站上经常会看到QQ登录的效果,就和这个很类似,代码段基于JavaScript,根据你的情况使用,有时候是用CSS完成的这种功能. <html> <head> <meta http-equiv="Content-Type" content="text/htm
-
基于JS实现弹出一个隐藏的div窗口body页面变成灰色并且不可被编辑
当需要实现如下图操作,点击服务评分,出现一个服务评分窗口用来填入相关表单信息 可是这会让我们打开服务评分界面时还可以点击body主界面中的购物车等链接,这是不对的,因此我们可以使用层叠样式表来指定外围的div的z-index低于当前服务评分表单页面,不能被点击,如下: /* 定义一个div用于覆盖整个页面,这个div的z-index大于body,小于服务评分div */ #temp{ background-color: #000; opacity: 0.3; width: 100%; heigh
-
Joomla实现组件中弹出一个模式(modal)窗口的方法
本文实例讲述了Joomla实现组件中弹出一个模式(modal)窗口的方法.分享给大家供大家参考,具体如下: 最关键的JS在 /media/system/js/modal.js .有以下两种方式都可以实现,修改的都是扩展组件的模板文件default.php. 方式一: <?php JHTML::_('behavior.modal', 'a.modal');?> <a rel="{handler: 'iframe', size: {x: 570, y: 400}}" hr
-
简述vue路由打开一个新的窗口的方法
简单说一下vue路由如何打开一个新的窗口 1.router-link标签 在vue的官方文档中 看到这大家应该会想,既然router-link不支持target="_blank"属性,那我们该怎么用router-link打开一个新的窗口呢?别急,继续往下看~ 文档中还有一处描述 router-link添加tag="li"属性后,居然可以变成li标签渲染出来,真特么神奇哈,那可不可以写成tag="a",从而去替代a标签呢?我们尝试着写一哈 <
-
python3 tkinter实现点击一个按钮跳出另一个窗口的方法
如下所示: #-*- encoding:utf-8 -*- from tkinter import * root = Tk() def create(): top = Toplevel() top.title('Python') v1 = StringVar() e1 = Entry(top,textvariable=v1,width=10) e1.grid(row=1,column=0,padx=1,pady=1) Button(top, text='出现2级').grid(row=1,col
-
运行bat时隐藏cmd窗口的方法(bat隐藏窗口 隐藏运行bat文件)
这里我们简单的整理下常用方法,方便大家使用.都是通过vbscript的代码.运行bat时隐藏cmd窗口的方法 可以编辑一个vbs脚本,在其中以隐藏窗口运行批处理程序. 复制代码 代码如下: Set ws = CreateObject("Wscript.Shell") ws.run "cmd /c 批处理程序名",vbhide 将上面代码拷贝到记事本中,保存为"runbat.vbs"或者其它的名字(扩展名必须是.vbs),然后点击运行生成的脚本ru
-
python实现根据窗口标题调用窗口的方法
本文实例讲述了python实现根据窗口标题调用窗口的方法.分享给大家供大家参考.具体分析如下: 当你知道一个windows窗口的标题后,可以用下面的代码调用窗口,甚至向窗口内写入内容. #-*-coding:utf-8-*- import win32gui,win32con #下面的是窗口的标题名称,这样是一定错的,但在控制台就可以正常使用 #写在文件里要用U编码 a=u"jb51.net" dlg=win32gui.FindWindow(None,a) //用控件的ID取得控件的句柄
随机推荐
- 用vbs来探测端口的代码 不用注册winsock
- 最新Linux系统下安装MySql 5.7.17全过程及注意事项
- JavaScript自动点击链接 防止绕过浏览器访问的方法
- Chrome Visual Studio 2005下的编译过程
- c#实现数据同步的方法(使用文件监控对象filesystemwatcher)
- Android仿简书搜索框效果的示例代码
- Javascript Function.prototype.bind详细分析
- Shell脚本while、until循环语句简明教程
- 学习标准——笔记
- 浅析Java Mail无法解析带分号的收件人列表的问题
- jquery.cookie.js 操作cookie实现记住密码功能的实现代码
- javascript在一段文字中的光标处插入其他文字
- 学做Bootstrap的第一个页面
- C# FTP操作类分享
- 深入探讨Java多线程中的volatile变量
- PHP调用微博接口实现微博登录的方法示例
- C#获取系统当前IE版本号
- Vue与Node.js通过socket.io通信的示例代码
- springboot如何获取相对路径文件夹下静态资源的方法
- layui实现数据分页功能