我有一个UserControl,其他控件:
我需要启用点击我点击用户控件的任何项目,这样我就可以设置UserControl的bordertyle.
如果我没有添加任何控件,这是有效的,但如果我有一个面板,我尝试单击面板,我的UserControl的click事件不会被触发.
这是我的代码:
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点击事件的任何线索,即使我点击其他元素?
最佳答案 实际上实现这一点非常简单,你可以遍历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;
}
}
//...
}