如果鼠标快速的从这些panel上划过,就会出现多个panel颜色改变,这个有什么好的方法实现吗?
源码:http://download.csdn.net/detail/haifeng3326/8194919#comment
..............................................
以前做c++的,刚开始学winform没多久,练手做的界面,感觉比MFC好看多了,分享一下,有兴趣的可以去看看。有一个登录界面和一个主界面,做的很简单,几张图片,设置一下背景,切换窗体,contextMenuStrip实现换肤,见笑!!
12 个解决方案
#1
不好意思,没说清楚。鼠标快速的从这些panel上划过时就会出现多个panel颜色改变,这个不是我想要的,怎么解决,或者还有别的方法实现这个效果?
#2
可以把离开时的颜色变成Null
#3
我做过一个类似的,但是我改变的是PictureBox,Foreimage用PNG,MoveLeave是BackImage为Null,移动的时候给张背景图。。。
#4
我做过一个类似的,但是我改变的是PictureBox,Foreimage用PNG,MoveLeave是BackImage为Null,移动的时候给张背景图。。。
有foreimage属性吗?
#5
有foreimage属性吗?
写过了,是Image
#6
这个简单啊,告诉你办法
在每个Panel_MouseOver事件中加入
pane1.BackColor=...
pane2.BackColor=...
就是把别的panel控件的背景色变回去就行了。
在每个Panel_MouseOver事件中加入
pane1.BackColor=...
pane2.BackColor=...
就是把别的panel控件的背景色变回去就行了。
#7
这个简单啊,告诉你办法
在每个Panel_MouseOver事件中加入
pane1.BackColor=...
pane2.BackColor=...
就是把别的panel控件的背景色变回去就行了。
试了一下,如果鼠标没有在panel上停留直接进入到picturebox上颜色还是不改变,总不能把picturebox和label控件都加上吧。
Panel_MouseOver的时间只读还没法修改
#8
这个简单啊,告诉你办法
在每个Panel_MouseOver事件中加入
pane1.BackColor=...
pane2.BackColor=...
就是把别的panel控件的背景色变回去就行了。
试了一下,如果鼠标没有在panel上停留直接进入到picturebox上颜色还是不改变,总不能把picturebox和label控件都加上吧。
Panel_MouseOver的时间只读还没法修改
答对了。 要么就只要用个label 放图片 autosize false text对齐方式bottom mid
#9
我下载看了一下,这个问题比较严重。
首先,你用的是一个 Panel 上面叠了一个 PictureBox,然后这个问题的就是由于 PictureBox 和 Panel 这两者的 MouseEnter 和 MouseLeave 相互之间的切换过于频繁引起的,当你鼠标移动过快的时候,事实上,在这个事件里面,他还要进行相应的计算,反应速度跟不上你的节奏,因为在 PictureBox 的 侧边和 Panel 的侧边的距离很短,鼠标一个瞬移,就会出问题。
这个实现不好,真要组合图片,我建议你使用 UserControl,这样就不会混乱了。
首先,你用的是一个 Panel 上面叠了一个 PictureBox,然后这个问题的就是由于 PictureBox 和 Panel 这两者的 MouseEnter 和 MouseLeave 相互之间的切换过于频繁引起的,当你鼠标移动过快的时候,事实上,在这个事件里面,他还要进行相应的计算,反应速度跟不上你的节奏,因为在 PictureBox 的 侧边和 Panel 的侧边的距离很短,鼠标一个瞬移,就会出问题。
这个实现不好,真要组合图片,我建议你使用 UserControl,这样就不会混乱了。
#10
WinForm 透明背景色 是: Color.Trans****
—— 将 背景色,设置为 这个 值,你的 按钮 也就 透明了。
—— 将 背景色,设置为 这个 值,你的 按钮 也就 透明了。
#11
这个简单啊,告诉你办法
在每个Panel_MouseOver事件中加入
pane1.BackColor=...
pane2.BackColor=...
就是把别的panel控件的背景色变回去就行了。
试了一下,如果鼠标没有在panel上停留直接进入到picturebox上颜色还是不改变,总不能把picturebox和label控件都加上吧。
Panel_MouseOver的时间只读还没法修改
当然要都加上,这个问题是很常见的,解决办法就是这样,每个控件都加上不过不用写这样的代码了
你把这个做成一个组合控件就行了,控件上放picturebox和label,然后在usecontrol_mouseover加上this.backColor=..
然后在picturebox_mouseover加上onmouseover(e);
#12
可以对pannel添加鼠标响应。判断鼠标的位置是否是在panel内,然后做响应的处理
#1
不好意思,没说清楚。鼠标快速的从这些panel上划过时就会出现多个panel颜色改变,这个不是我想要的,怎么解决,或者还有别的方法实现这个效果?
#2
可以把离开时的颜色变成Null
#3
可以把离开时的颜色变成Null
我做过一个类似的,但是我改变的是PictureBox,Foreimage用PNG,MoveLeave是BackImage为Null,移动的时候给张背景图。。。
#4
可以把离开时的颜色变成Null
我做过一个类似的,但是我改变的是PictureBox,Foreimage用PNG,MoveLeave是BackImage为Null,移动的时候给张背景图。。。
有foreimage属性吗?
#5
可以把离开时的颜色变成Null
我做过一个类似的,但是我改变的是PictureBox,Foreimage用PNG,MoveLeave是BackImage为Null,移动的时候给张背景图。。。
有foreimage属性吗?
写过了,是Image
#6
这个简单啊,告诉你办法
在每个Panel_MouseOver事件中加入
pane1.BackColor=...
pane2.BackColor=...
就是把别的panel控件的背景色变回去就行了。
在每个Panel_MouseOver事件中加入
pane1.BackColor=...
pane2.BackColor=...
就是把别的panel控件的背景色变回去就行了。
#7
这个简单啊,告诉你办法
在每个Panel_MouseOver事件中加入
pane1.BackColor=...
pane2.BackColor=...
就是把别的panel控件的背景色变回去就行了。
试了一下,如果鼠标没有在panel上停留直接进入到picturebox上颜色还是不改变,总不能把picturebox和label控件都加上吧。
Panel_MouseOver的时间只读还没法修改
#8
这个简单啊,告诉你办法
在每个Panel_MouseOver事件中加入
pane1.BackColor=...
pane2.BackColor=...
就是把别的panel控件的背景色变回去就行了。
试了一下,如果鼠标没有在panel上停留直接进入到picturebox上颜色还是不改变,总不能把picturebox和label控件都加上吧。
Panel_MouseOver的时间只读还没法修改
答对了。 要么就只要用个label 放图片 autosize false text对齐方式bottom mid
#9
我下载看了一下,这个问题比较严重。
首先,你用的是一个 Panel 上面叠了一个 PictureBox,然后这个问题的就是由于 PictureBox 和 Panel 这两者的 MouseEnter 和 MouseLeave 相互之间的切换过于频繁引起的,当你鼠标移动过快的时候,事实上,在这个事件里面,他还要进行相应的计算,反应速度跟不上你的节奏,因为在 PictureBox 的 侧边和 Panel 的侧边的距离很短,鼠标一个瞬移,就会出问题。
这个实现不好,真要组合图片,我建议你使用 UserControl,这样就不会混乱了。
首先,你用的是一个 Panel 上面叠了一个 PictureBox,然后这个问题的就是由于 PictureBox 和 Panel 这两者的 MouseEnter 和 MouseLeave 相互之间的切换过于频繁引起的,当你鼠标移动过快的时候,事实上,在这个事件里面,他还要进行相应的计算,反应速度跟不上你的节奏,因为在 PictureBox 的 侧边和 Panel 的侧边的距离很短,鼠标一个瞬移,就会出问题。
这个实现不好,真要组合图片,我建议你使用 UserControl,这样就不会混乱了。
#10
WinForm 透明背景色 是: Color.Trans****
—— 将 背景色,设置为 这个 值,你的 按钮 也就 透明了。
—— 将 背景色,设置为 这个 值,你的 按钮 也就 透明了。
#11
这个简单啊,告诉你办法
在每个Panel_MouseOver事件中加入
pane1.BackColor=...
pane2.BackColor=...
就是把别的panel控件的背景色变回去就行了。
试了一下,如果鼠标没有在panel上停留直接进入到picturebox上颜色还是不改变,总不能把picturebox和label控件都加上吧。
Panel_MouseOver的时间只读还没法修改
当然要都加上,这个问题是很常见的,解决办法就是这样,每个控件都加上不过不用写这样的代码了
你把这个做成一个组合控件就行了,控件上放picturebox和label,然后在usecontrol_mouseover加上this.backColor=..
然后在picturebox_mouseover加上onmouseover(e);
#12
可以对pannel添加鼠标响应。判断鼠标的位置是否是在panel内,然后做响应的处理