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



我们的应用程序要求见证服务器必须先进行身份验证,然后登录用户才能执行注册操作(注册和删除(。这对于注册来说不是问题,因为我可以在调用和触发捕获方法之前向enrollment_OnStartEnroll方法添加检查(IsWitnessApproved(。

但是,这不可能用于删除,因为我无法访问enrollment_OnDelete方法尚未触发的点。

我无法从数字角色那里得到对此问题的回应,所以我现在正在寻找解决方法。

我正在探索是否可以在enrollment_OnDelete方法中打开一个新表单(WitnessApproval(,批准表单(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);
        }
    }

选定的见证人批准方法:

    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;
    }

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

有用于此目的的 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。在"见证审批表单"按钮处理程序中,您还需要将DialogResult设置为在见证获得批准时true,或在用户取消操作时设置为false

相关内容

  • 没有找到相关文章

最新更新