C# 如何运行用户控件非常规事件
我有一个带有一些按钮的用户控件(tmNewItem、tmEdit、tmInsert) 我为他们写了一个clickButton事件 例如:C# 如何运行用户控件非常规事件,c#,winforms,user-controls,C#,Winforms,User Controls,我有一个带有一些按钮的用户控件(tmNewItem、tmEdit、tmInsert) 我为他们写了一个clickButton事件 例如: public void btnEdit_Click(object sender, EventArgs e) { btnNew.Enabled = false; btnEdit.Enabled = false; } 我在另一个项目中使用了此用户控件,并为按钮编写了另一个方法,并将其分配给usr控件:
public void btnEdit_Click(object sender, EventArgs e)
{
btnNew.Enabled = false;
btnEdit.Enabled = false;
}
我在另一个项目中使用了此用户控件,并为按钮编写了另一个方法,并将其分配给usr控件:
public void DTedit(object sender, EventArgs e)
{
}
private void UserControl_Load(object sender, EventArgs e)
{
DT_Navigator.btnCancel.Click += new EventHandler(DTedit);
}
现在,当我运行项目并按下btnEdit按钮时,第一次,btnEdit_单击将执行,然后执行DTedit。我能换一下吗?我的意思是第一次运行DTedit(我在我的项目中定义了它),然后在运行btnEdit_单击(我在用户控件中定义了它)之后?
我该怎么做呢?试试这个
建议代码
//User control
public event CancelEventHandler BeginEdit;
public event EventHandler EndEdit;
private btnYourButton_Click(object sender, EventArgs e)
{
CancelEventArgs e = new CancelEventArgs();
e.Cancel = false;
if (BeginEdit != null)
BeginEdit(this, e);
if (e.Cancel == false)
{
if (EndEdit != null)
EndEdit(this, new EventArgs);
//You can place your code here to disable controls
}
}
只需使用
-=
删除处理程序即可。例如,DT_Navigator.btnCancel.Click+=neweventhandler(DTedit)代码>从另一个事件调用事件是非常糟糕的做法。我建议你重新思考一下你在这里想做什么。@Nimesh你能解释得更多吗?thanks@Elahe为什么不将DTedit
中的逻辑移到它自己的方法中呢。然后从UserControl\u Load
和DTedit
调用该方法。一种更具可扩展性和可维护性的方法things@paqogomez我希望如果DTedit中的逻辑代码成功完成,那么btnEdit_单击“完成”。例如:在DTedit中,我检查用户是否输入了真实数据?如果为true,我在btnEdit_Click中禁用btnEdit。那么,您想先设置执行顺序DTedit,然后再设置btnEdit_Click?为什么要在其Click事件中禁用按钮?用户必须按下该按钮才能将其禁用,但您已经确定要将其禁用。这没有任何意义。那么为什么不创建单独的验证方法呢?例如,创建两个事件。开始编辑和结束编辑。
//User control
public event CancelEventHandler BeginEdit;
public event EventHandler EndEdit;
private btnYourButton_Click(object sender, EventArgs e)
{
CancelEventArgs e = new CancelEventArgs();
e.Cancel = false;
if (BeginEdit != null)
BeginEdit(this, e);
if (e.Cancel == false)
{
if (EndEdit != null)
EndEdit(this, new EventArgs);
//You can place your code here to disable controls
}
}