如何只处理一次Textbox离开事件

Dor*_*eka 2 c# winforms

如果用户输入大于零的值,我编写了一个代码来打开表单,如下所示

 private void txtNoOfAddenda_Leave(object sender, EventArgs e)
    {
       string traceNo = string.Empty;
        int i = 0;
        if (!int.TryParse(txtNoOfAddenda.Text, out i))
        {
            MessageBox.Show("Enter numeric value betewwn(0-9999)");
            txtNoOfAddenda.Focus();
        }
        else
        {
            if (i > 0)
            {
                traceNo = txtTraceNo.Text.Substring(8, 7);
                frmAddenda frmAddenda = new frmAddenda(i, traceNo);
                frmAddenda.ShowDialog();
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

这工作正常,但如果我移回我的选项卡,如果再次文本框离开相同的代码执行我只需要这一次被解雇一次可以任何人给我一个想法..

Jon*_*eet 8

如果您真的希望事件处理程序只触发一次,那么只需取消订阅处理程序中的事件:

txtNoOfAddenda.Leave -= txtNoOfAddenda_Leave;
Run Code Online (Sandbox Code Playgroud)

我的猜测是你只想在显示新表单的代码中使用此代码 - 而不是显示消息框.

你真的希望用户只能一次显示新表格吗?如果他们关闭那个表格然后回到带有文本框的那个表格怎么办?如果没有办法再显示另一种形式,例如他们是否改变了价值?