王朝网络
分享
 
 
 

实现:为自写的表格控件中的表格线 实现鼠标拖放功能

王朝other·作者佚名  2006-01-10
宽屏版  字体: |||超大  

在原始表格的基础上(已经完成了绘制的功能,并且包含相应的数组可以用来计算)

先看看效果。

然后实现的是对鼠标事件的判断,通过数组的数据可以知道鼠标在什么情况下会经过表格线的上方

现在构造方法中加入相关的监听:

this.MouseMove +=new MouseEventHandler(Grid_MouseMove);

this.MouseDown +=new MouseEventHandler(Grid_MouseDown);

this.MouseUp +=new MouseEventHandler(Grid_MouseUp);

然后分别写这三个事件的方法:

private void Grid_MouseMove(object sender,MouseEventArgs e) ...

因为首先要写的是判断鼠标是不是在控件上方,所以只要写Grid_MouseMove就可以了。这里的关键就是对数组中数据的计算,判断结果后将鼠标的形状也修改掉。

if (e.X-m_count>-3 && e.X-m_count<3 && e.Y<m_sy)

//其中m_count就是经过的那条线的长度了,通过循环计算出来的,另外加入的就是当鼠标在表格线外时,即e.Y<m_sy不会执行后面的指令。呵呵,在外面也能修改的那是bug吧。

之后就是移动的问题了,这里我判断在鼠标在表格线上按下之后才执行移动,这里引入了几个变量,一个就是关于鼠标是否被按下的bool变量,另外还有按下的是那条线,多长,这些都作为private变量放在class中。

e,好像照片没发上来,凑合看吧。鼠标在移动的过程中并不是直接移动控件的,我是让他在左键抬起的时候才执行重绘的命令,这时可以加入一些提示,比如鼠标移动的时候加入虚线,我引用了一个叫magiclibrary的控件。网上可以查到。

Rectangle rect2 = new Rectangle(m_P1.X-2, m_P2.Y, 4, m_sy);

Crownwood.Magic.Common.DrawHelper.DrawDragRectangle(rect2, 2);

Point p1 = this.PointToScreen(new Point(e.X, e.Y));

Point p2 = this.PointToScreen(new Point(0, 0));

Rectangle rect1 = new Rectangle(p1.X-2, p2.Y, 4, m_sy); //m_sy还是外框的长度

Crownwood.Magic.Common.DrawHelper.DrawDragRectangle(rect1, 2);

其中m_P1和m_P2都是point类型,作为private在class中出现的。这样做可以实现花出虚线并且跟随鼠标,没有痕迹。

比起来mousedown和mouseup部分就没有什么重头戏了。一个是判断鼠标是否按下,另一个把的到结果的数据重新显示只要移动的线没出了表格框就行,具体判断就是看用户需求了。

mouseup:

//m_colflag传过来的数据就是鼠标点击的是第几行的线

if(m_colflag!=-1 && m_colflag<m_Cols.Length-1) //横向拖动

{

int temp=e.X-m_count; //这里判断防止出现表格内的越界问题

if ( (this.m_Cols[m_colflag]>-temp) && (this.m_Cols[m_colflag+1]>temp))

{

this.m_Cols[m_colflag]+=temp;

this.m_Cols[m_colflag+1]-=temp;

}

}

...this.Relayout();

这样大体的思路应该就出来了。从编写过程中看,主要的难点还是在数组的计算上,只要提供相应数据就可以了。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有