如何在C#中实现窗口的自动隐藏

问题描述

我想用C#编写一个类似于VisualStudio中的解决方案资源管理器那样的窗口,可以实现停靠、自动隐藏等功能,不知道如何实现,望大家多帮忙。

解决方案

解决方案二:
看看........
解决方案三:
黑,虽然没想过,不过先mark一下。
解决方案四:
up
解决方案五:
关注
解决方案六:
有个目前已经编写好了商业软件控件,DotNetBar你可以去搜索一些,有破解版本。
解决方案七:
参考如下代码:usingSystem.Runtime.InteropServices;publicpartialclassForm1:Form{publicForm1(){InitializeComponent();}[DllImport("user32.dll")]publicstaticexternIntPtrGetDesktopWindow();protectedoverrideCreateParamsCreateParams{get{constintWS_EX_TOPMOST=8;base.CreateParams.Parent=GetDesktopWindow();base.CreateParams.ExStyle|=WS_EX_TOPMOST;returnbase.CreateParams;}}AnchorStylesanchors;constintOFFSET=2;protectedoverridevoidWndProc(refMessagem){constintWM_MOVING=534;switch(m.Msg){caseWM_MOVING://窗体移动的消息,控制窗体不会移出屏幕外intleft=Marshal.ReadInt32(m.LParam,0);inttop=Marshal.ReadInt32(m.LParam,4);intright=Marshal.ReadInt32(m.LParam,8);intbottom=Marshal.ReadInt32(m.LParam,12);left=Math.Min(Math.Max(0,left),Screen.PrimaryScreen.Bounds.Width-Width);top=Math.Min(Math.Max(0,top),Screen.PrimaryScreen.Bounds.Height-Height);right=Math.Min(Math.Max(Width,right),Screen.PrimaryScreen.Bounds.Width);bottom=Math.Min(Math.Max(Height,bottom),Screen.PrimaryScreen.Bounds.Height);Marshal.WriteInt32(m.LParam,0,left);Marshal.WriteInt32(m.LParam,4,top);Marshal.WriteInt32(m.LParam,8,right);Marshal.WriteInt32(m.LParam,12,bottom);anchors=AnchorStyles.None;if(left<=OFFSET)anchors|=AnchorStyles.Left;if(top<=OFFSET)anchors|=AnchorStyles.Top;if(bottom>=Screen.PrimaryScreen.Bounds.Height-OFFSET)anchors|=AnchorStyles.Bottom;if(right>=Screen.PrimaryScreen.Bounds.Width-OFFSET)anchors|=AnchorStyles.Right;timer1.Enabled=anchors!=AnchorStyles.None;break;}base.WndProc(refm);}privatevoidForm1_Load(objectsender,EventArgse){timer1.Enabled=false;timer1.Interval=200;TopMost=true;}[DllImport("user32.dll")]publicstaticexternIntPtrWindowFromPoint(PointPoint);[DllImport("user32.dll")]publicstaticexternIntPtrGetParent(IntPtrhWnd);privatevoidtimer1_Tick(objectsender,EventArgse){IntPtrvHandle=WindowFromPoint(Control.MousePosition);while(vHandle!=IntPtr.Zero&&vHandle!=Handle)vHandle=GetParent(vHandle);if(vHandle==Handle)//如果鼠标停留的窗体是本窗体,还原位置{if((anchors&AnchorStyles.Left)==AnchorStyles.Left)Left=0;if((anchors&AnchorStyles.Top)==AnchorStyles.Top)Top=0;if((anchors&AnchorStyles.Right)==AnchorStyles.Right)Left=Screen.PrimaryScreen.Bounds.Width-Width;if((anchors&AnchorStyles.Bottom)==AnchorStyles.Bottom)Top=Screen.PrimaryScreen.Bounds.Height-Height;}else//隐藏起来{if((anchors&AnchorStyles.Left)==AnchorStyles.Left)Left=-Width+OFFSET;if((anchors&AnchorStyles.Top)==AnchorStyles.Top)Top=-Height+OFFSET;if((anchors&AnchorStyles.Right)==AnchorStyles.Right)Left=Screen.PrimaryScreen.Bounds.Width-OFFSET;if((anchors&AnchorStyles.Bottom)==AnchorStyles.Bottom)Top=Screen.PrimaryScreen.Bounds.Height-OFFSET;}}}

解决方案八:
mark
解决方案九:
授人予鱼不如授人予渔

时间: 2024-09-15 02:44:33

如何在C#中实现窗口的自动隐藏的相关文章

解决Windows 7中QQ面板的自动隐藏功能

Windows 7 为了改善用户操作体验,强化了鼠标窗口拖拽操作的功能.如果我们用鼠标将某程序窗口拖拽至桌面左侧或右侧,这个程序窗口就会自动以 50% 的宽度在桌面左侧或右侧显示,方便横向比对:如果将程序窗口拖拽至桌面顶部,则可以实现窗口的自动最大化,再次拖拽又会恢复原始窗口大小,这类似于早期版本Windows 的鼠标双击窗口标题栏.者今天在微软新闻组看到一个问题:QQ 是大家非常熟悉的常用即时通讯软件,其主面板采用了类似 Windows 侧边栏的设计,因此很多人习惯设置 QQ 主面板的自动隐藏

win7电脑中如何实现QQ自动隐藏?

  一般情况下,咱们不会让QQ显示在电脑的屏幕上,只有用到QQ的时候才回去打开主界面,但是自动缩小又觉得经常去点开很麻烦,所以很多朋友的选择都是让QQ隐藏在屏幕的边缘处,需要的时候将鼠标移动过去,界面就会自动显示出来,大家可能不知道,其实在win7 32位系统中,咱们已经有办法可以将QQ界面自动隐藏起来了,下面,小编就来介绍一下具体的方法吧! 1.首先,咱们返回到电脑桌面,然后找到桌面的空白处点击右键,选择菜单中的"屏幕分辨率". 2.在弹出来的屏幕分辨率属性窗口中,咱们选择高级设置.

如何在Java中避免equals方法的隐藏陷阱

译者注 :你可能会觉得Java很简单,Object的equals实现也会非常简单,但是事实并不是你想象的这样,耐心的读完本文,你会发现你对Java了解的是如此的少.如果这篇文章是一份Java程序员的入职笔试,那么不知道有多少人会掉落到这样的陷阱中. 摘要 本文描述重载equals方法的技术,这种技术即使是具现类的子类增加了字段也能保证equal语义的正确性. 在<Effective Java>的第8项中,Josh Bloch描述了当继承类作为面向对象语言中的等价关系的基础问题,要保证派生类的e

如何在Win8中设置是否合并或者隐藏标签

  任务栏图标设置"合并或者隐藏"效果; 任务栏图标设置"从不合并"效果. 操作步骤: 1.在系统任务栏单击右键,选择"属性"打开; 2.点击"任务栏按钮"右侧的按钮; 3.选择需要设置的显示方式"合并隐藏"或者"从不合并"等,点击确定即可.

pb9aaaaaaa-如何在pb9中创建window窗口的标题前面加图片

问题描述 如何在pb9中创建window窗口的标题前面加图片 如何在pb9中创建window窗口的标题前面加图片aaaaaaaaaaaaaaaaaaaaaaaaaaa

javascript-求教啊!如何在js中操作本窗口的菜单栏等的隐藏和本窗口的大小?

问题描述 求教啊!如何在js中操作本窗口的菜单栏等的隐藏和本窗口的大小? 在一个jsp页面中,我需要用js控制当前窗口的菜单栏.工具栏等为隐藏状态,同时还要控制当前窗口的大小,请问如何解决? 解决方案 采用jquery的animate操作菜单栏的隐藏及缩小放大该窗口,例子: if(isAllTable && !isAllOcx){ $(".right_content").animate({height:'234px'}); $("#cameraTabConte

如何在CODE中使用代码在网页中打开一个新窗口?

问题描述 如何在CODE中使用代码在网页中打开一个新窗口?protectedvoidBtnAddContact_Click(objectsender,EventArgse){if(Page.IsValid){}}备注说明:在HTML中可以直接使用window.open这个我知道 解决方案 解决方案二:Response.Write("<script>window.open</script>");解决方案三:这样啊,我的意思是,还没有别的,不用写<script

Win7系统如何在excel中添加word文档结构图

  Win7系统如何在excel中添加word文档结构图          方法一: Word提供了一个很方便的功能--文档结构图,通过文档结构图可以在整个文档中快速浏览并追踪特定的文件内容位置.文档结构图是一个独立的窗口,类似于大纲视图,它能够显示文档的标题,单击文档结构图中的标题后,Word就会自动转到文档中的相应标题,并将其显示在窗口的顶部.用户可以单击菜单""视图"-"文档结构图"来打开它.但是EXCEL中没有提供文档结构图,那么如何管理数据量较大

如何在 vim 中更好的编辑 java 文件

这次介绍一下如何在 vim 中更好的编辑 java 文件.作者: camry.wu@gmail.com 1. javabrowser 编辑类文件时, 类资源树是个有用的东西, 可以把类的成员, 方法等等很直观的 显示出来. 在 vim 中也可以实现好像 vc, jbuilder 那样的类资源树, 当然比 那些会简单些, 不过也够好用的了. 就是用 javabrowser.vim 这个脚本实现的. 先到 vim online 去找到这个脚本文件.(在这还能找到许多有用的其他脚本) 然后在 goog