2
///
重写OnControlAdded方法,为每个子控件添加MouseLeave事件
3
///
</summary>
4
///
<param name="e"></param>
5
protected
override
void
OnControlAdded(ControlEventArgs e)
7
Control control = e.Control;
//
获取添加的子控件
8
control.MouseLeave +=
this
.SubControlLeave;
//
当鼠标离开该子控件时判断是否是离开SelfDefinePanel
9
base
.OnControlAdded(e);
10
}
12
///
<summary>
13
///
重写OnMouseLeave事件,如果是离开本身的矩形区域则发生 base.OnMouseLeave(e);
14
///
</summary>
15
///
<param name="e"></param>
16
protected
override
void
OnMouseLeave(EventArgs e)
17
{
18
//
判断鼠标是否还在本控件的矩形区域内
19
if
(!
this
.RectangleToScreen(
this
.ClientRectangle).Contains(Control.MousePosition))
//
this.RectangleToScreen(this.ClientRectangle) 映射为屏幕的矩形
20
{
21
base
.OnMouseLeave(e);
22
}
复制以上代码在需要的窗体中即可。这样,如果鼠标进入到窗体中的子控件,导致也触发了窗体的Leavel移开事件的问题就解决了。
转载于:https://www.cnblogs.com/qinyun118/p/4800044.html
1 /// <summary> 2 /// 重写OnControlAdded方法,为每个子控件添加MouseLeave事件 3 /// </summary> 4 /// <param name="e"></param> 5 protected ove...
1,on
mouse
leave
和on
mouse
enter
- on
mouse
leave
事件
在
鼠标
移出元素时
触发
。
- on
mouse
enter
事件
在
鼠标
指针移动到元素上时
触发
。
on
mouse
enter和on
mouse
leave
事件
不支持冒泡,不包含子元素
2,on
mouse
over和on
mouse
out
- on
mouse
over
事件
会在
鼠标
指针移动到指定的元素上时发生。
- on
mouse
out
事件
会在
鼠标
指针移出指定的对象时发生。
on
mouse
over和on
mouse
ou
将主
窗体
的名称改为规则名称
Frm开头,后缀见名知意,遵从大驼峰命名法.
窗体
应用程序是一个闭源软件,所以源代码不会公开,当一个软件在开发完之后,将本项目下/bin/debug目录下的可执行应用程序拷贝或剪切,提供给使用者即可.
如没有可执行应用程序,需要在vs中重新生成后即可.
1、【属性】
Size:调整
窗体
宽高
Winform
控件
鼠标
离开
事件
中
鼠标
进入
子
控件
也会
触发
mouse
leave
事件
处理
最近在做一个关于语音与文本互相转化的小工具,利用的是百度的语音与文本转化接口。由于百度的语音转文本极速版接口中,只
支持pcm格式以及处理60s以内的文件,故而工具中使用到了其中使用到了将包括 mp3,m4a。。。等格式音频文件转化成pcm格式
文件以及将超过60s文件切割成若干60s以内文件的技术,有...
mouse
over: 冒泡
不论
鼠标
指针穿过被选元素或其子元素,都会
触发
mouse
over
事件
只有在
鼠标
指针穿过被选元素时,才会
触发
mouse
enter
事件
mouse
leave
: 不冒泡
mouse
out:冒泡
不论
鼠标
指针离开被选元素还是任何子元素,都会
触发
mouse
out
事件
只有在
鼠标
指针离开被选元素时,才会
触发
mouse
leave
事件
使用
mouse
enter和
mouse
leave
不会受子元素影响而
问题背景》
UI逻辑中 经常有这样的应用场景:在
鼠标
进入
窗口区域时做一些操作 离开
鼠标
区域时做一些清理操作
举例:
鼠标
进入
窗口区域时 弹出tooltips 离开窗口区域时 隐藏tooltips
但是On
Mouse
Leave
并不一定就会响应 比如在
鼠标
进入
窗口后 按下
鼠标
左键并将
鼠标
移除窗口区域 再松开
鼠标
这样的情况下 On
Mouse
Leave
不一定会响应
问题来了:如果有些清理
在
Winform
中,可以使用ShowDialog方法打开一个模态
窗体
,当关闭这个模态
窗体
后,可以在父
窗体
上继续执行代码。可以使用FormClosing
事件
来处理
窗体
关闭
事件
,在这个
事件
中可以判断关闭的
窗体
是否是模态
窗体
,如果是,则可以在父
窗体
上执行相应的代码。
示例代码:
// 在父
窗体
中打开模态
窗体
private void button1_Click(object sender, EventArgs e)
Form2 form2 = new Form2();
form2.ShowDialog();
// 处理模态
窗体
关闭
事件
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
if (e.CloseReason == CloseReason.FormOwnerClosing)
// 父
窗体
关闭时的处理代码
在父
窗体
中打开模态
窗体
时,可以使用ShowDialog方法,这会使打开的
窗体
变成模态
窗体
。在父
窗体
的FormClosing
事件
中,可以通过判断CloseReason属性的值来确定父
窗体
是否关闭,如果是,则可以在
事件
处理程序中编写相应的处理代码。