アプリケーションのコンボ ボックスで、コントロールがバインドされているコレクションをユーザーが編集できるようにしたいと考えています。これを行うには、カーソルがコントロール上にあるときに表示されるボタンが必要です。そこで、コンボ ボックスとボタンを備えたユーザー コントロールを作成しました。ただし、適切なタイミングでボタンを表示するのに問題があります。これが私のコードです:
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;
}
}
したがって、すべてのコントロールに同じマウスの出入りがあるので、マウスがコントロール全体に入るとボタンが表示され、離れると非表示になるという考えでした。問題は、入る前にマウスを離すイベントが発生することです。したがって、マウスをコントロールに移動すると、ボタンが表示されます。しかし、ボタンに移動しようとすると、カーソルが上にあったコントロールが何であれ、マウスが離れてしまい、ボタンを「入力」する前にボタンが見えなくなります。何かご意見は?