1
是否有可能檢測控件是否已獲得用戶控件的焦點?我的意思不是我們在設計時添加到用戶控件中的某些控件,而是控制我們在表單上使用用戶控件後添加它們的控件。一個意思是面板的例子。我的用戶控件就像面板一樣,我想要檢測用戶控件上的包含(嵌套)控件何時獲得我關注的任何焦點。檢測用戶控件內部控件焦點
謝謝你們!
是否有可能檢測控件是否已獲得用戶控件的焦點?我的意思不是我們在設計時添加到用戶控件中的某些控件,而是控制我們在表單上使用用戶控件後添加它們的控件。一個意思是面板的例子。我的用戶控件就像面板一樣,我想要檢測用戶控件上的包含(嵌套)控件何時獲得我關注的任何焦點。檢測用戶控件內部控件焦點
謝謝你們!
我會這樣做的方式是當UserControl被創建並且您不處於設計模式時,循環遍歷用戶控件中的每個控件,將鉤子添加到它們的GotFocus事件並將鉤子指向UserControl(如ChildControlGotFocus)反過來引發用戶控件的主機可以使用的事件。
例如,下面是實現該功能的用戶控件樣品:
public partial class UserControl1 : UserControl
{
public UserControl1()
{
InitializeComponent();
if (!this.DesignMode)
{
RegisterControls(this.Controls);
}
}
public event EventHandler ChildControlGotFocus;
private void RegisterControls(ControlCollection cControls)
{
foreach (Control oControl in cControls)
{
oControl.GotFocus += new EventHandler(oControl_GotFocus);
if (oControl.HasChildren)
{
RegisterControls(oControl.Controls);
}
}
}
void oControl_GotFocus(object sender, EventArgs e)
{
if (ChildControlGotFocus != null)
{
ChildControlGotFocus(this, new EventArgs());
}
}
}
感謝。我非常感謝你所做的這件事。 – MahanGM