Mah*_*ari 3 .net c# events user-controls winforms
我有User Control一堆控件.我想将此默认事件设置为我的一个按钮User Control的Click事件.
我知道要将默认事件设置为UserControl的一个事件,我应该添加属性:
[DefaultEvent("Click")]
public partial class ucPersonSearch : UserControl
...
Run Code Online (Sandbox Code Playgroud)
我想知道是否可以做以下事情:
[DefaultEvent("btn1_Click")]
public partial class ucPersonSearch : UserControl
...
Run Code Online (Sandbox Code Playgroud)
我希望在btn1被阻止的时候在托管此用户控件的表单中触发一些方法.
这对我的项目来说真的很有针对性,而你的回答将是有价值的.
Moh*_*han 11
您不能将班级成员的事件暴露给班级外部.其他人如何订阅你Click的Button内部活动UserControl?你试过吗?除非您从外部访问按钮,否则这是不可能的,这是不好的(每个人都可以更改所有属性).
您必须定义一个新事件,并在您所需的事件(单击按钮)发生时触发您的新事件:
[DefaultEvent("MyClick")]
public partial class UCPersonSearch : UserControl
{
Button btnSearch;
public event EventHandler MyClick;
public UCPersonSearch()
{
btnSearch = new Button();
//...
btnSearch.Click += new EventHandler(btnSearch_Click);
}
void btnSearch_Click(object sender, EventArgs e)
{
OnMyClick();
}
protected virtual void OnMyClick()
{
var h = MyClick;
if (h != null)
h(this, EventArgs.Empty);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4857 次 |
| 最近记录: |