C#:WinForm無邊框窗體移動方法、模仿鼠標單擊標題欄移動窗體位置

方法一:直接通過修改窗體位置從而達到移動窗體的效果

方法二:直接偽裝發送單擊任務欄消息,讓應用程序誤以為單擊任務欄從而移動窗體

?

方法一

1.定義一個位置信息Point用于存儲鼠標位置

private Point mPoint;

2.給窗體等控件增加MouseDown和MouseMove事件?

/// <summary>
/// 鼠標按下
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void panel1_MouseDown(object sender, MouseEventArgs e)
{mPoint = new Point(e.X, e.Y);
}/// <summary>
/// 鼠標移動
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void panel1_MouseMove(object sender, MouseEventArgs e)
{if (e.Button == MouseButtons.Left){this.Location = new Point(this.Location.X + e.X - mPoint.X, this.Location.Y + e.Y - mPoint.Y);}
}

方法二:?

1.引入下面代碼 前提需要引入命名空間using System.Runtime.InteropServices

[DllImport("user32.dll")]
public?static?extern?bool?ReleaseCapture();[DllImport("user32.dll")]
public?static?extern?bool?SendMessage(IntPtr hwnd,?int?wMsg,?int?wParam,?int?lParam);private?const?int?VM_NCLBUTTONDOWN = 0XA1;//定義鼠標左鍵按下
private?const?int?HTCAPTION = 2;

2.增加鼠標按下事件發送消息,讓系統誤以為按下是標題欄

/// <summary>
/// 鼠標按下
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void panel1_MouseDown(object sender, MouseEventArgs e)
{
//為當前應用程序釋放鼠標捕獲
ReleaseCapture();
//發送消息 讓系統誤以為在標題欄上按下鼠標
SendMessage((IntPtr)this.Handle, VM_NCLBUTTONDOWN, HTCAPTION, 0);
}

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/252082.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/252082.shtml
英文地址,請注明出處:http://en.pswp.cn/news/252082.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Python 字典刪除元素clear、pop、popitem

同其它python內建數據類型一樣&#xff0c;字典dict也是有一些實用的操作方法。這里我們要說的是字典刪除方法&#xff1a;clear()、pop()和popitem()&#xff0c;這三種方法的作用不同&#xff0c;操作方法及返回值都不相同。接下來就來查看下這些字典特定方法的具體用法是什么…

reactor模式:多線程的reactor模式

上文說到單線程的reactor模式 reactor模式&#xff1a;單線程的reactor模式 單線程的reactor模式并沒有解決IO和CPU處理速度不匹配問題&#xff0c;所以多線程的reactor模式引入線程池的概念&#xff0c;把耗時的IO操作交由線程池處理&#xff0c;處理完了之后再同步到selecti…

Elasticsearch實戰篇——Spring Boot整合ElasticSearch

2019獨角獸企業重金招聘Python工程師標準>>> 當前Spring Boot很是流行&#xff0c;包括我自己&#xff0c;也是在用Spring Boot集成其他框架進行項目開發&#xff0c;所以這一節&#xff0c;我們一起來探討Spring Boot整合ElasticSearch的問題。 本文主要講以下內容…

C#:Dockpanel的一些入門的基本操作

原文鏈接&#xff1a; 一、引用&#xff1a; 1.建立一個WinForm工程&#xff0c;默認生成了一個WinForm窗體Form1&#xff08;此處默認為主窗體&#xff09;。 2.引用—>添加引用—>瀏覽—>weiFenLuo.winFormsUI.Docking.dll。 3.設置Form1窗體屬性IsMdiContainer…

MyBatis中if,where,set標簽

<if>標簽 <select id"findActiveBlogWithTitleLike"resultType"Blog">SELECT * FROM BLOG WHERE state ‘ACTIVE’ <if test"title ! null">AND title like #{title}</if> </select> if標簽通常伴隨著where,set…

Python3基礎 __repr__ 類的實例對象的名字 可以打印文字(1)

引用自&#xff1a;http://www.bubuko.com/infodetail-1918622.html 這個__repr__的作用從下邊的例子中可以看出,返回實例化對象的表達 code: class MyClass() :def __str__(self) :return "我是MyClass的一個實例"def __repr__(self) :return "這回連print都省…

Day03:文件打開;錯誤處理

錯誤處理 try: #要執行的代碼 except 錯誤的類型&#xff08;可選&#xff09;: #發生錯誤時執行的代碼 finally: #有沒有發生錯誤都執行的代碼 復制代碼with open() as 變量名&#xff1a; with提供一種叫上下文管理協議的python技術&#xff0c;系統會自動關閉文件 open() 默…

Python: pip升級報錯了:You are using pip version 10.0.1, however version 20.3.3 is available.

1,Python使用命令&#xff1a;python -m pip install --upgrade pip升級pip的時候報了下面這個錯 2,換了個命令&#xff1a; python -m pip install --upgrade pip -i https://pypi.douban.com/simple 更新成功了&#xff0c;但又報了一個新的錯誤&#xff1a; AttributeError:…

新手上路之Hibernate:第一個Hibernate例子

一、Hibernate概述 &#xff08;一&#xff09;什么是Hibernate&#xff1f; Hibernate核心內容是ORM&#xff08;關系對象模型&#xff09;。可以將對象自動的生成數據庫中的信息&#xff0c;使得開發更加的面向對象。這樣作為程序員就可以使用面向對象的思想來操作數據庫&…

模板標簽及模板的繼承與引用

1.常用的模板標簽 - 作用是什么:提供各種邏輯 view.py: def index(request):#模板標簽 --常用標簽 總結&#xff1a;語法 {% tag %} {% endtag %} {% tag 參數 參數 %} 示例 展示頁index.html&#xff0c;包含for標簽&#xff0c;if標簽&#xff0c;url標簽 {% extends teacher…

文件夾操作之創建

創建文件夾可通過Directory類的CreateDirectory方法來實現格式為&#xff1a;Directory.CreateDirectory(“文件路徑”)&#xff1b;String path“C:\Users\Administrator\Desktop\51zxw”&#xff1b; If&#xff08;Directory.exists&#xff08;path&#xff09;&#xff09…

doxygen

http://www.doxygen.nl/轉載于:https://www.cnblogs.com/zengkefu/p/7383793.html

C#:RichTextBox 追加其它顏色的行列

1、新建靜態擴展方法public static class RichTextBoxExtension{public static void AppendTextColorful(this RichTextBox rtBox, string text, Color color, bool addNewLine true){if (addNewLine){text Environment.NewLine;}rtBox.SelectionStart rtBox.TextLength;rtB…

Golang實現一個密碼生成器

小地鼠防止有人偷他的果實&#xff0c;在家里上了一把鎖。這個鎖怎么來的呢&#xff1f;請往下看。。 package mainimport ("flag""fmt""math/rand""time" )var (length intcharset string )const (NUmStr "0123456789"C…

Java基礎知識(二)

1、String、StringBuffer、StringBuilder 操作少量數據->String單線程操作字符串緩沖區下操作大量數據->StringBuilder多線程操作字符串緩沖區下操作大量數據->StringBuffer可變性&#xff1a;String類中使用final關鍵字private final char value[]&#xff0c;所以St…

C# WPF:初識布局容器

StackPanel堆疊布局 StackPanel是簡單布局方式之一&#xff0c;可以很方便的進行縱向布局和橫向布局 StackPanel默認是縱向布局的 <Window x:Class"WpfApplication1.MainWindow" xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation" …

Kibana源碼分析--Hapijs路由設置理解筆記

【ES6解構賦值】&#xff1a;https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment 【Joi APi】&#xff1a;https://github.com/hapijs/joi/blob/v13.1.2/API.md 轉載于:https://www.cnblogs.com/lishidefengchen/p/866874…

Python打包EXE神器 pyinstaller

最近由于項目需要&#xff0c;以前的python文件需要編輯為EXE供前端客戶使用。 由于最早接觸的是distutils&#xff0c;所以一開始準備使用distutils和py2exe搭配來進行python的exe化&#xff0c;也就是傳統的使用setup.py的方式來進行exe安裝。但是結果都不是很好&#xff0c;…

好程序員HTML5前端教程-css的引入方式和選擇器

好程序員HTML5前端教程-css的引入方式和選擇器 01.引入css方式&#xff08;重點掌握&#xff09; 行內樣式 內接樣式 外接樣式      3.1 鏈接式      3.1 導入式 css介紹 現在的互聯網前端分三層&#xff1a; HTML&#xff1a;超文本標記語言。從語義的角度描述頁面結…

4.4.6 數組也能無鎖:AtomicIntegerArray

數組也可以實現cas操作&#xff0c;有以下幾個類以及用法如下&#xff1a; public class AtomicTntegerArrayTest {public static void main(String[] args) {AtomicIntegerArray atomicIntegerArraynew AtomicIntegerArray(3);AtomicLongArray atomicIntegerArray1new AtomicL…