0

このアプリケーションでは、ログインしているユーザーが登録操作 (登録と削除) を実行する前に、証人が認証される必要があります。enrollment_OnStartEnrollCapture メソッドが呼び出されて起動される前にメソッド IE にチェック (IsWitnessApproved) を追加できるため、これは登録の問題ではありません。

enrollment_OnDeleteただし、メソッドが起動していないポイントにアクセスできないため、これは削除には不可能です。

Digital Personaからこの問題に対する回答を得ることができなかったので、現在回避策を検討しています。

WitnessApprovalメソッド内で新しいフォーム ( )を開き、フォーム ( )enrollment_OnDeleteで証人を承認してbtnConfirmWitness_Clickから、メソッドに戻って削除を続行できるかどうかを調査しています。

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

1 に答える 1

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

あなたの場合、Form2ですWitnessApproval。WitnessApproval フォーム ボタン ハンドラーでは、監視が承認されたとき、またはユーザーが操作をキャンセルしたときも設定DialogResultする必要があります。truefalse

于 2018-02-02T11:46:06.510 に答える