WinForm 中 VScrollBar Maximum 问题
最近在做一个鼠标经过弹出 TreeView 面板功能 , 要求鼠标离开TreeView区域,隐藏面板。 功能如期开发,其中当TreeView 出现滚动条时,鼠标经过TreeView中的滚动条时,提前隐藏。 原因: TreeView 中将 滚动区域视为非已部份。因此鼠标经过该区域,触发 MouseLeave 事件,但滚动区域没有显示声明 MouseEnter , MouseLeave 的入口 , 因此无法在触发MouseLeave(隐藏动作) 后即时触发 滚动区域的MouseEnter(显示面版)事件。
因此禁用TreeView Scroll 功能,外层使用Panel, Panel 同时禁用Scroll 功能(只做容器), Scroll 功能由 VScrollBar 实现滚动功能,通过设置 TreeView.Top 值。
因此,需要做如下工作:
1. 手动计算TreeView 内容高度,并将高度值赋给 TreeView.Height.
2.将VScrollBar Maxnum 值设为 TreeView.Height - Panel.Height
3. 设置VScrollBar 中的ValueChange 事件,将 value 赋给 TreeView.top
private void vScrollBar1_Scroll(object sender, ScrollEventArgs e)
{
//e.NewValue 值达不到 vScrollBar1.Maximum ???
if (vScrollBar1.Maximum - e.NewValue <= 10)
{
treeView1.Top = vScrollBar1.Maximum * -1;
}
else {
treeView1.Top = e.NewValue * -1;
}
}
其中 VScrollBar Value 值最大时,总是小预设的 Maximum值,因此即使滚动到底部,也总有一部份内容不可视。因此,采用折中方式,如果滚动到底部时,VScrollBar Value 值 与 Maximum之差小于 10 px , 将 当前滚动值视为 Maximum 值
private void vScrollBar1_Scroll(object sender, ScrollEventArgs e)
{
//e.NewValue 值达不到 vScrollBar1.Maximum ???
if (vScrollBar1.Maximum - e.NewValue <= )
{
treeView1.Top = vScrollBar1.Maximum * -;
}
else {
treeView1.Top = e.NewValue * -;
}
}
WinForm 中 VScrollBar Maximum 问题的更多相关文章
- .net开发笔记(十八) winform中的等待框
winform中很多任务是需要在后台线程(或类似)中完成的,也就是说,经常容易涉及到UI界面与后台工作线程之间的交互.比如UI界面控制后台工作的执行(启动.暂停.停止等),后台工作进度在UI界面上的显 ...
- C#在WinForm中重写ProgressBar控件(带%的显示)
废话少说,直接上码: namespace csPublish { [ToolboxItem(true)] class textProgressBar : System.Windows.Forms.Pr ...
- C# WinForm 中Label自动换行 解决方法
在TableLayoutPannel中放着一些Label如果把Label的AutoSize属性设成True的话,文字超过label长度时就会自动增加,直到后面的字出窗体以外设置成False时,一旦到达 ...
- 转载:WinForm中播放声音的三种方法
转载:WinForm中播放声音的三种方法 金刚 winForm 播放声音 本文是转载的文章.原文出处:http://blog.csdn.net/jijunwu/article/details/4753 ...
- C# Winform 中如何实现音乐播放和视频播放
C# Winform 中如何实现音乐播放和视频播放 namespace WindowsFormsApplication1 { public partial class Form2 : Form { ...
- 另一种在WINFORM中使用XNA的方法
之前在写化学分子模型制作程序的时候,使用一种方法,将WINFORM控件嵌入到XNA窗体中,从而实现了即使用WINFORM窗体控件又使用XNA.最近在写另一个物理运动学课件制作程序,同样使用XNA,但从 ...
- winform中dataGridView单元格根据值设置新值,彻底解决绑定后数据类型转换的困难
// winform中dataGridView单元格在数据绑定后,数据类型更改困难,只能迂回实现.有时候需要将数字变换为不同的文字描述,就会出现int32到string类型转换的异常,借助CellFo ...
- winform中ComboBox实现text和value,使显示和值分开,重写text和value属性
winform的ComboBox中只能赋值text,显示和值是一样的,很多时候不能满足根本需要,熟悉B/S开发的coder最常用的就是text和value分开的,而且web下DropDownList本 ...
- winform中dataGridView隔行显示不同的背景色,鼠标移动上显示不同颜色,离开后变回原色
winform中dataGridView隔行显示不同的背景色,鼠标移动上显示不同颜色,离开后变回原色 先设置奇数行颜色,这个有个自带的属性AlternatingRowsDefaultCellStyle ...
随机推荐
- (九)uboot配置编译、源码分析
一.X210官方uboot配置编译实践1.找到官方移植好的uboot(BSP概念)(1)源头的源代码是uboot官网下载的.这个下载的源代码可能没有你当前使用的开发板的移植,甚至找不到当前开发板使用的 ...
- laravel各种路径的获取方法
若Route中有Route::get('home/test', 'HomeController@index')->name('test'); ①视图中的href跳转 一.<a href=& ...
- 加速Eclipse使其成为超快的IDE
按照下述步骤来加速Eclipse为超快的IDE,它适用于32和64位版本的Eclipse /JDK(OS为64位Windows 7). 1.禁用防病毒软件,或将JDK.Eclipse.workspac ...
- 使用Python获取Linux系统的各种信息
哪个Python版本? 当我提及Python,所指的就是CPython 2(准确的是2.7).我会显式提醒那些相同的代码在CPython 3 (3.3)上是不工作的,以及提供一份解释不同之处的备选代码 ...
- nginx安装笔记
双节点安装 1 节点一 1.1 目录 /usr/local cd /usr/local 1.2 openssl rpm -ql openssl /usr/share/doc/openssl-1.0.0 ...
- Hbase之批量删除数据
import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; impo ...
- mismatch位置(MD tag)- sam/bam格式解读进阶
这算是第二讲了,前面一讲是:Edit Distance编辑距离(NM tag)- sam/bam格式解读进阶 MD是mismatch位置的字符串的表示形式,貌似在call SNP和indel的时候会用 ...
- 在XP下基于VHD版XP 2003 win7制作的RAMOS心得
在XP下基于VHD版win7制作的RAMOS心得1.用DiskGenius创建1.85G的VHD固定磁盘文件,以win7prosen.vhd为例,然后进行分区格式化,格式化时启用NTFS压缩.2.为了 ...
- Cache模拟器(CacheSim)
最近写了一个Cache的模拟器,由于平时空余时间比较分散,前前后后用了一周多的时间,基本实现的Cache的模拟功能(通过读取trace文件得到相应的命中率),能够实现直接映射.全相联.组相联三种 ...
- 【CodeForces 651B】Beautiful Paintings 排序+贪心
题目大意: 给定集合,对于任意一个的排列,记,求. 很明显每次搞出一个长度为的最长上升序列,然后把元素给删掉,答案增加. 直接暴力需要. 但是可以进行优化. 设有个,将个数从小到大排序,记为长度为的数 ...