我有UserControl
还有其他控件:
我需要启用点击我点击用户控件的任何项目,这样我就可以设置UserControl的bordertyle。
如果我没有添加任何控件,这是有效的,但如果我有一个面板,我尝试点击面板,我的UserControl的点击事件不会被解雇。< / p>
这是我的代码:
public partial class TestControl : UserControl
{
public TestControl()
{
InitializeComponent();
this.Click += Item_Click;
IsSelected = false;
}
public bool IsSelected { get; set; }
void Item_Click(object sender, EventArgs e)
{
if (!IsSelected)
{
IsSelected = true;
this.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
}
else
{
IsSelected = false;
this.BorderStyle = System.Windows.Forms.BorderStyle.None;
}
}
}
即使点击其他元素,有关如何触发UserControl点击事件的任何线索?
答案 0 :(得分:2)
实际上实现这一点非常简单,你可以遍历UserControl中包含的所有控件,并将Item_Click
注册到他们的EventHandler,它将在Click事件被触发时调用它:
public partial class TestControl : UserControl {
public TestControl( ) {
//...
for ( int i = 0; i < Controls.Count; i++ ) {
Controls[ i ].Click += Item_Click;
}
}
//...
}