对于我的应用程序中的组合框,我希望允许用户编辑控件绑定到的集合。为此,我希望有一个在光标位于控件上方时出现的按钮。因此,我创建了一个带有组合框和按钮的用户控件。但是,我在让按钮在正确的时间显示时遇到问题。这是我的代码:
public partial class CollectionDropDown : UserControl
{
public CollectionDropDown()
{
InitializeComponent();
SetEventsRecursively(Controls);
}
public void SetEventsRecursively(ControlCollection controls)
{
foreach (Control ctrl in controls)
{
ctrl.MouseLeave += new EventHandler(ctrl_MouseLeave);
ctrl.MouseEnter += new EventHandler(ctrl_MouseEnter);
SetEventsRecursively(ctrl.Controls);
}
}
void ctrl_MouseEnter(object sender, EventArgs e)
{
button1.Visible = true;
}
void ctrl_MouseLeave(object sender, EventArgs e)
{
button1.Visible = false;
}
}
所以想法是所有控件都将具有相同的鼠标进入/离开,因此当鼠标进入整个控件时,按钮将是可见的,而当它离开时,它将是不可见的。问题是鼠标离开事件在进入之前触发。因此,当您将鼠标移入控件时,该按钮变为可见。但是当您尝试移动到按钮时,无论光标在哪个控件上都会触发鼠标离开,并且在您“输入”它之前按钮变得不可见。有什么想法吗?