我有一个UserControl(我们称之为“PresentationCell
”),它包含一个标签和一个PictureBox。在另一个使用这个PresentationCell
的控件中,我添加了一个事件
presentationCell.GotFocus += OnFocus;
private void OnFocus(object sender, EventArgs e)
{
if (sender is PresentationCell current)
current.BackColor = Color.Azure;
}
如果我单击/聚焦于PictureBox
内的标签或PresentationCell
,则不会触发此操作。
当PresentationCell
中的某些东西成为焦点时,我该如何解雇呢?
这里的问题是,Label和PictureBox控件不是可选控件,因此它们无法通过鼠标单击获得焦点。
您可以做的是处理鼠标单击事件并检查您是否已经点击了PresentationCell。如果启动了PresentationCell,您可以以编程方式设置焦点,如下所示:
hitPresentationCell.Focus();
然后,这将触发GotFocus事件。
在OnFocus方法中,您必须将焦点切换到另一个控件,否则事件将无休止地触发。