在处理活动和/或代表时遇到问题。我看到了非常相似的问题,但我仍然不清楚真正的实施情况。所以,当你回答更具体的问题时,我可以尝试并最终了解如何通过我所知道的代码来完成公共/自定义事件的创建/处理工作。
我所拥有的是User Control
,它只是一个文本框和一个按钮,我需要使用文本框中的值更改数据库中的记录。我正在使用这个控件用于许多表单,所以我需要知道我正在使用哪个实体并且能够调用它自己的save方法。如果我可以使用click
按钮的User Control
事件,然后调用当前表单的Save()
方法,那么这样做会更容易。
这是我的用户控制:
namespace UserControls.CommonControls
{
public delegate void ClickMe(string message);
public partial class ChangeCode : UserControl
{
public event ClickMe CustomControlClickMe;
public ChangeCode()
{
InitializeComponent();
}
private void btnChange_Click(object sender, EventArgs e)
{
if (CustomControlClickMe != null)
CustomControlClickMe("Hello");
//ToDo fill
//MessageBox.Show("To Do: Write the busieness logic.");
}
public void SetTextBoxMask(MaskedTextBox txtBox)
{
txtChange.Mask = txtBox.Mask;
}
}
}
我发布了最后一次尝试尝试实现我需要的东西。
这是需要使用Click
中的User Control
事件以及Constructor
更具体的事件之一,因为如果我理解正确,我必须订阅的地方对于该事件:
public MaterialEdit()
{
InitializeComponent();
UserControls.CommonControls.ChangeCode. += new ClickMe(button2_Click);
}
UserControls.CommonControls.ChangeCode
- 这就是我将User Control
命名为ChangeCode
的方式。
答案 0 :(得分:1)
根据您粘贴的内容,您不清楚是否在表单中添加了ChangeCode
控件。要使用控件及其事件和属性,首先必须为其创建新实例并将其添加到表单中。这样做了:
只有这样才能处理该对象的事件。假设您将ChangeCode
控件删除到表单,并且Visual Studio将其命名为ChangeCode1
。您将处理的事件附加到此CustomControlClickMe
事件:
ChangeCode1.CustomControlClickMe += new ClickMe(button2_Click);
您粘贴的代码(UserControls.CommonControls.ChangeCode. += new ClickMe(button2_Click);
)不正确有以下几个原因:
.
结尾,这使得分配目标不正确(UserControls.CommonControls.ChangeCode.
).CustomControlClickMe
)