最近做c#的UI开发,有个非常烦恼的问题,就是Panel的MouseLeave事件,当鼠标移动到Panel的子控件时也会触发MouseLeave事件,摸索了半天,终于发现了一个高效的方法。
该方法的思想是当Panel添加子控件时,为添加的子控件也添加鼠标离开事件,当子控件发生鼠标离开事件时,判断是否鼠标坐标在Panel的Rectangle内,如果在Panel内则不发生事件,否则就发生Panel的离开事件。当然,Panel也要重写鼠标离开事件,如果鼠标离开时是在本身的Rectangle内,则不发生离开事件,否则就正常发生了。以下SelfDefinePanel继承Panel类并重写OnMouseLeave方法和OnControlAdded方法。
using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
using System.Threading;
using System.Windows.Forms;
namespace Kingray.View.Component
{
/// <summary>
///
/// </summa