文章分类 | 推荐文章 | 最新文章 | 热点文章 | 最新软件 | 精品软件 | 下载排行 | 推荐下载 | 免费看大片 | WPS | 杀毒软件
清风网络
首 页 软件下载 网络学院 数码学院
QQ 电脑入门 游戏 操作系统 图形处理 办公软件 媒体动画 精文荟萃 工具软件 网络编程 程序开发 网络技术 认证考试 网站建设 文章专栏
当前位置:清风网络学院网络编程Asp.NetC#中势将窗体拖拽进行到底
精品推荐
特别推荐
·技巧实例:ASP.NET生成静态页面实现方法
·ASP.NET、JSP及PHP之间的抉择
·.net基础知识错误注意二十二点知识
·asp.net2.0学习历程 菜鸟到中级程序员的飞跃
·.NET基础知识-什么是.NET
·初学C#+ASP.NET+Oracle时积累的备忘点滴
·专家详解:复杂表达式的执行步骤
·asp.net中的加密方法
·DataGrid常见关注问题解决方案
·学习笔记 ASP.NET 5种页面转向法
热点TOP10
·DataList嵌套实例
·C#中势将窗体拖拽进行到底
·Paint.NET 3.20正式版下载
·ASP.NET2.0的multiview和wizard控件
·.net基础知识错误注意二十二点知识
·.NET 3.x新特性之自动属性及集合初始化
·ASP.NET中Multi-ListBox控件编程详解
·技巧实例:ASP.NET生成静态页面实现方法
·绝对精华:ASP.NET常用的三十三种实用代码
·动态创建内容时所用的W3C DOM属性和方法

C#中势将窗体拖拽进行到底

日期:2008年6月12日 作者: 查看:[大字体 中字体 小字体]


  问题描述: 

  想在.Net下实现对一些非规则窗体,没有Caption,FormBorderStyle = System.Windows.Forms.FormBorderStyle.None;窗体的拖拽,最小化,最大化,特殊操作的实现(如图1所示)。在黄色的区域即区域1里实现对窗体的拖拽操作,在橙色区域即区域2里实现对窗体的最小化操作,在蓝色区域即区域3里实现对窗体的关闭操作,在绿色区域即区域4里实现对窗体的特殊操作(如双倍窗体)。
  

C#中势将窗体拖拽进行到底

(图1) 

  问题实现:

  第一种方法:添加Label为Label添加Click事件。(如图2所示) 如果要用这种方法实现,就要为每一个颜色区域进行切图,并要保证有正确的切图长和宽,然后设置Label的背景为这个图片。

C#中势将窗体拖拽进行到底

                    (图2) 

   处理他们的Click事件,拖拽处理MouseDown MouseUp事件。 

  第二种方法:不添加Label只处理鼠标事件,判断鼠标的位置然后决定执行什么操作,这种方法很耗费资源,每次鼠标点击就要判断,鼠标是否在某个区域然后决定是否要处理。不过这个处理用多态包装了。程序看起来比较整齐。

 //定义常量
   private Point point;
   private const int dragMove=172;
   private const int dragMin=72;
   private const int dragClose=72;
   private const int dragDouble=78;
   private const int dragHeight=29;
   private MouseHandleEnum dragEnum;
  
  //定义MouseDown事件
  private void DragMain_MouseDown(object sender, System.Windows.Forms.MouseEventArgs e)
   {
   point.X=e.X;
   point.Y=e.Y;
   if(e.Y<dragHeight)
   {
   if(e.X<dragMove)
   {
   dragEnum = MouseHandleEnum.Move;
   return;
   }
   if(e.X<dragMove+dragMin)
   {
   dragEnum = MouseHandleEnum.Min;
   return;
   }
   if(e.X<dragMove+dragMin+dragClose)
   {
   dragEnum = MouseHandleEnum.Close;
   return;
   }
   if(e.X<dragMove+dragMin+dragClose+dragDouble)
   {
   dragEnum = MouseHandleEnum.Double;
   return;
   }
   }
  
   }
  
  
  //定义MouseUp事件
  private void DragMain_MouseUp(object sender, System.Windows.Forms.MouseEventArgs e)
   {
   point.X=e.X-point.X;
   point.Y=e.Y-point.Y;

[1] [2] [3] [4] [5] 下一页 




上一篇:ASP.NET 2.0 缓存翻译草稿

下一篇:四种进程或线程同步互斥的控制方法

相关文章:
·卸载软件完全手册 将清除进行到底
·使用准则进行条件查询--1.4.从窗体中选择查询的条件
·窗体控件大小随窗体大小变化而变化
·C#中势将窗体拖拽进行到底
·建立自由的会计日期的报表--1.2.创建让用户选择日期窗体
·ACCESS如何打印窗体中当前显示的记录
·CubaseSX的时代(一)主要窗体预览
·CubaseSX的时代(五)Project窗体编辑基础
·VB 神童教程第二章第十五节——窗体
·用VB.net2008编写数据查询窗体
相关软件:
·魔鬼XP窗体皮肤控件V1.01
·窗体属性修改专家 2005 九月特别版

特别声明:本站除部分特别声明禁止转载的专稿外的其他文章可以自由转载,但请务必注明出处和原始作者。文章版权归文章原始作者所有。对于被本站转载文章的个人和网站,我们表示深深的谢意。如果本站转载的文章有版权问题请联系编辑人员,我们尽快予以更正。
[打印本页] [关闭窗口] 转载请注明来源:http://www.vipcn.net
| 帮助(?) | 版权声明 | 友情连接 | 关于我们 | 信息发布
Copyright 2007 www.vipcn.net All Rights Reserved. 鄂ICP备05000083号Powered by:viphot