如何打开表单里面的方法,提交按钮然后回到原始方法继续?

时间:2018-02-02 11:40:34

标签: c# winforms digital-persona-sdk

我们的应用程序要求见证人必须在登录用户执行注册操作(注册和删除)之前进行身份验证。 这不是注册的问题,因为我可以将检查(IsWitnessApproved)添加到enrollment_OnStartEnroll方法I.E.在调用并触发Capture方法之前。

但是,对于删除操作,这是不可能的,因为我无法访问enrollment_OnDelete方法未被解雇的点。

我无法通过 Digital Persona 对此问题做出回应,所以我现在正在寻找解决方法。

我正在探索是否可以在WitnessApproval方法中打开新表单(enrollment_OnDelete),批准表单中的见证(btnConfirmWitness_Click)然后来回到方法并继续删除?

enrollment_OnDelete方法:

    private void enrollment_OnDelete(DPCtlUruNet.EnrollmentControl enrollmentControl, Constants.ResultCode result, int fingerPosition)
    {
        if (!witnessApproved)
        {
            WitnessApproval witnessApproval = new WitnessApproval();
            witnessApproval.Show();
        }

        else
        {
            int fingerMask = GetFingerMask(fingerPosition);

            if (enrollmentControl.Reader != null)
            {
                try
                {
                    // Delete from database
                    new EnrollmentDAL().DeleteEnrolledFingerprint(Settings.Default.Username, fingerMask, txt_WitnessName.Text);
                    MessageBox.Show("Fingerprint deleted.", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information);

                    pbFingerprint.Image = null;
                    pbFingerprint.Visible = false;
                    btnCancel.Visible = false;
                    witnessApproved = false;
                    txt_WitnessName.Text = String.Empty;
                    txt_WitnessPassword.Text = String.Empty;
                }
                catch (Exception ex)
                {
                    MessageBox.Show("There was a problem deleting the fingerprint.", "Message", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    new Util().LogError(ex);
                }
            }
            else
            {
                MessageBox.Show("No Reader Connected.", "Message", MessageBoxButtons.OK, MessageBoxIcon.Warning);
            }

            _sender.Fmds.Remove(fingerPosition);
        }
    }

选择的WitnessApproval方法:

    private void btnConfirmWitness_Click(object sender, EventArgs e)
    {
        lbl_Validation.Visible = false;

        if (txt_WitnessName.Text == String.Empty)
        {
            SetMessage("Please enter a Witness.");
            return;
        }
        if (txt_WitnessPassword.Text == String.Empty)
        {
            SetMessage("Please enter a Password.");
            return;
        }
        if (txt_WitnessName.Text == Settings.Default.Username)
        {
            SetMessage("User and witness cannot be the same.");
            return;
        }

        bool IsValidate = Membership.ValidateUser(txt_WitnessName.Text, txt_WitnessPassword.Text);

        Settings.Default.WitnessName = txt_WitnessName.Text;
        Settings.Default.WitnessPassword = txt_WitnessPassword.Text;

        if (IsValidate)
        {
            this.Close();
            // Allow enrollment operations
        }
        else
        {
            SetMessage("Witness credentials invalid.");
        }
    }

    private void btnCancelWitness_Click(object sender, EventArgs e)
    {
        this.Close();
        // DO NOT Allow enrollment operations
        witnessCancelled = true;
    }

    private void SetMessage(string message)
    {
        lbl_Validation.Visible = true;
        lbl_Validation.Text = message;
    }

1 个答案:

答案 0 :(得分:1)

  

如何在方法内打开表单,提交按钮然后回到原始方法并继续?

为此目的有ShowDialog方法。

以下是MSDN的使用示例:

public void ShowMyDialogBox()
{
   Form2 testDialog = new Form2();

   // Show testDialog as a modal dialog and determine if DialogResult = OK.
   if (testDialog.ShowDialog(this) == DialogResult.OK)
   {
      // Read the contents of testDialog's TextBox.
      this.txtResult.Text = testDialog.TextBox1.Text;
   }
   else
   {
      this.txtResult.Text = "Cancelled";
   }
   testDialog.Dispose();
}

在您的情况下,Form2WitnessApproval。 在WitnessApproval表单按钮处理程序中,您还需要在证人被批准时将DialogResult设置为true,或在用户取消操作时将false设置为wordpress:cli