c#中无边框窗体改变大小?

问题描述

我是参考这里http://www.microsoft.com/china/community/Column/60.mspx我做的也是一个无边框的窗体现在已经实现了向右拉伸功能。方法(获得当前的鼠标横坐标(mousemove)FORM.WITCH=鼠标横坐标-location.X)如何实现向左拉伸?我思考的方法(FORM.WITCH=this.Right-当前鼠标横坐标,但是表现出来时窗体左边框没动右边框在增加缩小)不知道我是不是写错了。或者要实现无边框窗体的伸缩大小有没有另外的好方法?主要是不知道怎么样的状态下重绘?大家给点思路。

解决方案

解决方案二:
//向右if(e.X>=wid-5&&e.Y<=hig-5&&e.Y>=5){mouse=newMouseSizeRight(Location.X);return;}//向右下if((e.X>=wid-5&&e.Y>=hig-5)||(e.Y>=hig-5&&e.X>=wid-5)){mouse=newMouseSizeBottomRight(Location.X,Location.Y);return;}//向下if(y>=hig-5&&x<=wid-5&&x>=5){mouse=newMouseSizeBottom(Location.Y);return;}//向左下if(x<=5&&y>=hig-5&&y<=hig){mouse=newMouseSizeBottomLeft(Location.Y,wid,hig);return;}//向左拉if(e.X<=5&&e.Y<=hig-5&&e.Y>=5){mouse=newMouseSizeLeft(hig);return;}//向左上拉if(e.X<=5&&e.Y<=5&&e.Y>0){mouse=newMouseSizeTopLeft(Location.Y,hig);return;}//向上拉if(e.Y<=5&&e.X<=wid-5&&e.X>=5){mouse=newMouseSizeTop(Location.X,Location.Y,wid,hig);return;}//向右上if(e.X>=wid-5&&e.Y<=5){mouse=newMouseSizeTopRight(Location.X,Location.Y,wid,hig);return;}//拉右边publicclassMouseSizeRight:MouseAction{privateintlx;publicMouseSizeRight(intLocationX){lx=LocationX;}publicoverridevoidAction(intScreenX,intScreenY,System.Windows.Forms.Formform){form.Width=ScreenX-lx;form.Invalidate();}}//向下拉publicclassMouseSizeBottom:MouseAction{privateintly;publicMouseSizeBottom(intLocationY){ly=LocationY;}publicoverridevoidAction(intScreenX,intScreenY,System.Windows.Forms.Formform){form.Height=ScreenY-ly;form.Invalidate();}}//向左下拉publicclassMouseSizeBottomLeft:MouseAction{privateintwid;privateinthig;privateintly;publicMouseSizeBottomLeft(intLocationY,intLocationWid,intLocationHig){ly=LocationY;wid=LocationWid;hig=LocationHig;}publicoverridevoidAction(intScreenX,intScreenY,System.Windows.Forms.Formform){inta=ScreenX;intb=form.DesktopLocation.Y;form.SetDesktopBounds(a,b,form.Right-a,ScreenY-ly);form.Invalidate();form.Invalidate();}}//拉右下角publicclassMouseSizeBottomRight:MouseAction{privateintlx;privateintly;publicMouseSizeBottomRight(intLocationX,intLocationY){lx=LocationX;ly=LocationY;}publicoverridevoidAction(intScreenX,intScreenY,System.Windows.Forms.Formform){form.Width=ScreenX-lx;form.Height=ScreenY-ly;form.Invalidate();}}//拉左边publicclassMouseSizeLeft:MouseAction{privateinthig;publicMouseSizeLeft(intLocationhig){hig=Locationhig;}publicoverridevoidAction(intScreenX,intScreenY,System.Windows.Forms.Formform){intb=form.DesktopLocation.Y;form.SetDesktopBounds(ScreenX,b,form.Right-ScreenX,hig);form.Invalidate();}}//拉左上publicclassMouseSizeTopLeft:MouseAction{privateinthig;privateintly;publicMouseSizeTopLeft(intLxcationY,intLxcationHig){ly=LxcationY;hig=LxcationHig;}publicoverridevoidAction(intScreenX,intScreenY,System.Windows.Forms.Formform){form.SetDesktopBounds(ScreenX,ScreenY,form.Right-ScreenX,hig-ScreenY+ly);form.Invalidate();}}//拉上边publicclassMouseSizeTop:MouseAction{privateinthig;privateintwid;privateintlx;privateintly;publicMouseSizeTop(intLxcationX,intLxcationY,intLxcationWid,intLxcationHig){hig=LxcationHig;lx=LxcationX;wid=LxcationWid;ly=LxcationY;}publicoverridevoidAction(intScreenX,intScreenY,System.Windows.Forms.Formform){form.SetDesktopBounds(lx,ScreenY,wid,hig-ScreenY+ly);form.Invalidate();}}//拉右上publicclassMouseSizeTopRight:MouseAction{privateinthig;privateintwid;privateintlx;privateintly;publicMouseSizeTopRight(intLxcationX,intLxcationY,intLxcationWid,intLxcationHig){hig=LxcationHig;lx=LxcationX;wid=LxcationWid;ly=LxcationY;}publicoverridevoidAction(intScreenX,intScreenY,System.Windows.Forms.Formform){form.SetDesktopBounds(lx,ScreenY,ScreenX-lx,hig-ScreenY+ly);form.Invalidate();}

时间: 2024-11-10 01:04:04

c#中无边框窗体改变大小?的相关文章

C#中实现拖动无边框窗体Form

拖动无边框窗体Form至桌面任何位置 首先建一个Windows应用程序 将Form1的 FormBorderStyle属性设置为Noe   创建控件panel1放在标题栏位置   代码         Point mouseOff;//鼠标移动位置变量         bool leftFlag;//标签是否为左键         private void panel1_MouseDown(object sender, MouseEventArgs e)        {            

WPF无边框窗体,点击任务栏无法最小化

问题描述 WPF设置成无边框窗体后,点击任务栏无法最小化.在Winform中可以用以下方式解决这个问题.[DllImport("user32.dll",EntryPoint="GetWindowLong",CharSet=CharSet.Auto)]publicstaticexternintGetWindowLong(HandleRefhWnd,intnIndex);[DllImport("user32.dll",EntryPoint="

无边框窗体,窗体鼠标事件被禁止,求解决办法。

问题描述 protectedoverridevoidWndProc(refMessagem){constintWM_NCHITTEST=0x84;constintHTCLIENT=0x01;constintHTCAPTION=0x02;constintWM_SYSCOMMAND=0x112;constintSC_MAXMIZE=0xF030;constintWM_NCLBUTTONDBLCLK=0xA3;switch(m.Msg){case0x4e:case0xd:case0xe:case0x1

vb无边框窗体-[VB 6.0]无边框窗体用[JS]实现左键+拖动=改变窗体大小

问题描述 [VB 6.0]无边框窗体用[JS]实现左键+拖动=改变窗体大小 设想:Form1(绝对的无边框,不是有边框去掉标题栏)中只有webbrowser一个控件,webbrowser与Form1大小一致. 求助:Form1会被webbrowser控件完全覆盖,Form1的鼠标事件不会因鼠标操作而触发,而webbrowser控件本身没有鼠标事件[有没有不讨论,就当没有]这种情况下如何实现左键+拖动=改变窗口大小,可否在webbrowser-document中建一与Form1同样大小的DIV,用

winform中如何处理无边框窗体的缩放和托动

在winform经常用到无边框的窗体,原因就是想使自己的程序界面完全的自定义,网上也有过不少的相关资料 今天我发了一下的午的时间整理了一下.觉得还不错,贴出来看看. 为了提高托动的缩放的效率,减少系统开销,一般软件都用支持只显示窗体四周的虚线的方法,这也是windows默认的设置 首先看下其它软件的窗体托动,先说QQ2009吧,QQ2009的主窗体在托动时如果在屏幕上来回快速托动,等停下来时你会发现,很有可能鼠标现在在窗体的位置已经不是按下的位置了.再说酷我音乐盒.鼠标在托动或缩放窗体时,如果鼠

winform 无边框 窗体基本功能 拖动和系统右键菜单冲突

问题描述 usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Linq;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Runtime.InteropServices;usingRightMenuItem;namespaceClientFrom{pu

vb.net如何在win7下不开启阴影效果,如何实现无边框窗体阴影

问题描述 vb.net如何在win7下不开启阴影效果,如何实现无边框阴影,求高手给代码,谢谢各位了 解决方案 解决方案二:WPF整

vb.net 无边框窗体,阴影不完整

问题描述 SetClassLong(Me.Handle,GCL_STYLE,GetClassLong(Me.Handle,GCL_STYLE)OrCS_DROPSHADOW)现在调用API实现了右边框和下边框有阴影,如何让左边框和顶边框也实现由阴影的效果请赐教,谢谢!

在主窗体中打开子窗体的问题

问题描述 如图我是在主窗体中开打一个子窗体,子窗体是是最大化显示的,但在主窗体最上面一行出现了和标题栏一样的东西有最小化和关闭那个按钮,有什么办法可以不显示整个那条标题栏--.谢谢,求救!!! 解决方案 解决方案二:newMDIChild.Dock=DockStyle.Fill;formborderstyle属性设为Nonemaximizebox属性设为Falseminizebox属性设为FalseWindowsState设为maximized解决方案三:不行,还是一样的.解决方案四:继续顶,不