社区
C#
帖子详情
WPF 窗体自定义标题栏 最大化为什么一半在屏幕外面
Macho_
2016-05-19 04:41:40
...全文
182
2
打赏
收藏
WPF 窗体自定义标题栏 最大化为什么一半在屏幕外面
[图片]
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
songbing774933
2016-05-19
打赏
举报
回复
你是不是设置WindowStyle为None,又设置AllowsTransparency为True了?
在这种情况下的window窗口最大化后有很多问题,例如无法正常充满屏幕,无法显示任务栏。
为轮子而生
2016-05-19
打赏
举报
回复
我感觉,是你显示器的问题
C#
自定义
窗体
的
最大化
、最小化和关闭按钮
自定义
窗体
的
最大化
、最小化和关闭按钮, C#移动无
标题栏
窗体
的三种代码: C#移动无
标题栏
窗体
的三种代码:第一种采用,需注意
窗体
上的控件是否把
窗体
覆盖了。。。MouseDown、MouseMove、MouseUp事件应该是鼠标所处位置最顶层的控件的事件 在
窗体
的类中声明两个变量 private Point mouseOffset; //记录鼠标指针的坐标 private bool isMouseDown = false; //记录鼠标按键是否按下 创建该
窗体
MouseDown、MouseMove、MouseUp事件的相应处理程序 private void Form1_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e) { int xOffset; int yOffset; if (e.Button == MouseButtons.Left) { xOffset = -e.X ; yOffset = -e.Y ; mouseOffset = new Point(xOffset, yOffset); isMouseDown = true; } } private void Form1_MouseMove(object sender, System.Windows.Forms.MouseEventArgs e) { if (isMouseDown) { Point mousePos = Control.MousePosition; mousePos.Offset(mouseOffset.X, mouseOffset.Y); Location = mousePos; } } private void Form1_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e) { // 修改鼠标状态isMouseDown的值 // 确保只有鼠标左键按下并移动时,才移动
窗体
if (e.Button == MouseButtons.Left) { isMouseDown = false; } } 第二种调用API 未验证 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); public const int WM_SYSCOMMAND = 0x0112; public const int SC_MOVE = 0xF010; public const int HTCAPTION = 0x0002; private void Form1_MouseDown(object sender, MouseEventArgs e) { ReleaseCapture(); SendMessage(this.Handle, WM_SYSCOMMAND, SC_MOVE + HTCAPTION, 0); } 第三种未验证 private bool isMouseDown = false; private Point FormLocation; //form的location private Point mouseOffset; //鼠标的按下位置 [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 WM_SYSCOMMAND = 0x0112;//点击窗口左上角那个图标时的系统信息 private const int SC_MOVE = 0xF010;//移动信息 private const int HTCAPTION = 0x0002;//表示鼠标在窗口
标题栏
时的系统信息 private const int WM_NCHITTEST = 0x84;//鼠标在
窗体
客户区(除了
标题栏
和边框以外的部分)时发送的消息 private const int HTCLIENT = 0x1;//表示鼠标在窗口客户区的系统消息 private const int SC_MAXIMIZE = 0xF030;//
最大化
信息 private const int SC_MINIMIZE = 0xF020;//最小化信息 protected override void WndProc(ref Message m) { switch (m.Msg) { case WM_SYSCOMMAND: if (m.WParam == (IntPtr)SC_MAXIMIZE) { m.WParam = (IntPtr)SC_MINIMIZE; } break; case WM_NCHITTEST: //如果鼠标移动或单击 base.WndProc(ref m);//调用基类的窗口过程——WndProc方法处理这个消息 if (m.Result == (IntPtr)HTCLIENT)//如果返回的是HTCLIENT { m.Result = (IntPtr)HTCAPTION;//把它改为HTCAPTION return;//直接返回退出方法 } break; } base.WndProc(ref m);//如果不是鼠标移动或单击消息就调用基类的窗口过程进行处理 } private void Form1_Load(object sender, EventArgs e) { } ------------------------------- 如何在
窗体
标题栏
左边的控制菜单加入自己的菜单啊? 我们一般在窗口
标题栏
点右键 或 按Alt+空格 可以弹出那个菜单。 ------解决方案-------------------- using System.Runtime.InteropServices; [DllImport( "user32.dll ")] public static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert); [DllImport( "user32.dll ")] public static extern bool InsertMenu(IntPtr hMenu, uint uPosition, uint uFlags, uint uIDNewItem, string lpNewItem); public const int MF_BYCOMMAND = 0; public const int MF_STRING = 0; public const int MF_BYPOSITION = 0x400; public const int MF_SEPARATOR = 0x800; private const uint SC_ABOUT = 0x0001; public const int WM_SYSCOMMAND = 0x0112; private void Form1_Load(object sender, EventArgs e) { IntPtr vMenuHandle = GetSystemMenu(Handle, false); InsertMenu(vMenuHandle, 255, MF_STRING, SC_ABOUT, "About... "); } protected override void WndProc(ref Message m) { switch (m.Msg) { case WM_SYSCOMMAND: if ((uint)m.WParam == SC_ABOUT) { MessageBox.Show( "Zswang 路过! "); } break; } base.WndProc(ref m); }
.net 8.0
WPF
自定义
标题样式
标题栏
为
自定义
控件,实现标题显示、双击、移动
窗体
、最小化、
最大化
、关闭。
窗体
引用需要对
自定义
标题栏
绑定Title进行设置。 内容中
窗体
样式为暗色系。
wcf
自定义
窗口
wpf
自定义
窗体
,
自定义
窗体
标题栏
,解决
最大化
遮挡任务栏问题和
窗体
边框调节问题
c#禁止通过拖动,双击
标题栏
改变
窗体
大小的方法
最近写windows
窗体
程序,发现一个烦人的问题。
窗体
初始化时禁用了
最大化
按钮,并使之
最大化
。本希望
窗体
一直保持
最大化
。但是拖动,双击
标题栏
时
窗体
就会缩小。烦死了+_+。 最后,终于找到了解决方法。 //禁止通过拖动,双击
标题栏
改变
窗体
大小。 public const int WM_NCLBUTTONDBLCLK = 0xA3; const int WM_NCLBUTTONDOWN = 0x00A1; const int HTCAPTION = 2; protected override void WndProc(ref Message m) { if (m.M
用
WPF
实现
屏幕
文字提示的实现方法
本文介绍
WPF
应用程序实现在
屏幕
上显示一行或多行文字通知。它没有
标题栏
和
最大化
最小化等按钮,可以有半透明背景以使文字的显示更清晰,鼠标点击后提示消失。
C#
110,534
社区成员
642,575
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章