首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在C#中获取数字persona OnEnroll事件

如何在C#中获取数字persona OnEnroll事件
EN

Stack Overflow用户
提问于 2019-12-13 19:18:23
回答 1查看 327关注 0票数 0

我正在使用Windows应用程序从VB迁移到C#;我正在使用数字人物指纹扫描器来捕获员工指纹,它工作得很好,但我无法在C#中获取OnEnroll事件-这是我在VB上做的。

这是我的VB代码

代码语言:javascript
复制
Private allReaderSerial As String = "00000000-0000-0000-0000-000000000000"
Private WithEvents enrollControl As DPFP.Gui.Enrollment.EnrollmentControl

Private Sub CreateDPControl(ByRef control As DPFP.Gui.Enrollment.EnrollmentControl)
    Try
        control = New DPFP.Gui.Enrollment.EnrollmentControl()
        control.AutoSizeMode = Windows.Forms.AutoSizeMode.GrowAndShrink
        control.MaxEnrollFingerCount = 1
        control.Name = "enrollControl"
        control.Location = New System.Drawing.Point(0, 0)
        control.ReaderSerialNumber = "00000000-0000-0000-0000-000000000000"
        control.Visible = True
        control.Enabled = True
        Me.Controls.Add(control)
    Catch ex As Exception
        MessageBox.Show("exception", MsgTitle, MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
    End Try
End Sub

Private Sub frmBioCapture_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    If enrollControl Is Nothing Then
        CreateDPControl(enrollControl)
    End If
End Sub

Private WithEvents enrollControl As DPFP.Gui.Enrollment.EnrollmentControl
Private Sub enrollControl_OnEnroll(ByVal Control As Object, ByVal FingerMask As Integer, ByVal temp As DPFP.Template, ByRef EventHandlerStatus As DPFP.Gui.EventHandlerStatus) Handles enrollControl.OnEnroll
    staffTemplate = temp
    Me.Hide()
End Sub

Private Sub enrollControl_OnReaderDisconnect(Control As Object, ReaderSerialNumber As String, Finger As Integer) Handles enrollControl.OnReaderDisconnect
    MsgBox("Fingerprint reader is not conneted. Connect fingerprint reader.", vbExclamation, MsgTitle)
    Exit Sub
End Sub

上面的代码运行良好,我可以使用以下命令获取OnEnroll事件

代码语言:javascript
复制
Handles enrollControl.OnEnroll

我想在C#中实现同样的任务--以下是我到目前为止编写的代码:

代码语言:javascript
复制
private string allReaderSerialize = "00000000-0000-0000-0000-000000000000";
private DPFP.Gui.Enrollment.EnrollmentControl enrollControl;
private DPFP.Template template;

public FrmCapture()
{
    InitializeComponent();
}

private void CreateDPControl(DPFP.Gui.Enrollment.EnrollmentControl control)
{
    try
    {
        control = new DPFP.Gui.Enrollment.EnrollmentControl
            {
                AutoSizeMode = AutoSizeMode.GrowAndShrink,
                MaxEnrollFingerCount = 2,
                Name = "enrollControl",
                BackgroundImage = Properties.Resources.FormBackground,
                BackgroundImageLayout = ImageLayout.Stretch,
                Location = new Point(0, 0),
                ReaderSerialNumber = "00000000-0000-0000-0000-000000000000",
                Visible = true,
                Enabled = true
            };

        this.Controls.Add(control);
    }
    catch (Exception)
    {
        throw;
    }
}

private void FrmCapture_Load(object sender, EventArgs e)
{
    this.Location = new Point(400, 180);

    if (enrollControl == null)
    {
        CreateDPControl(enrollControl);
    }
}

private void EnrolControl_OnReaderDisconnected(object control, string ReaderSerialNumber, int finger)
{
    MessageBox.Show("Fingerprint reader is not connected. Connect fingerprint reader.");
    return;
}

private void EnrollControl_OnEnroll(object control, int fingerMask, DPFP.Template temp, DPFP.Gui.EventHandlerStatus eventHandlerStatus)
{
    template = temp;
}

使用完成的捕获是有效的,但是我不能获得OnEnroll事件(“捕获完成”)。

提前谢谢。

EN

回答 1

Stack Overflow用户

发布于 2019-12-13 19:23:37

在将其添加到Controls集合之前,您可以像这样附加处理程序。

代码语言:javascript
复制
 control.OnReaderDisconnect += EnrolControl_OnReaderDisconnected;

C#使用+=操作符将处理程序绑定到事件,并使用-=将其解除挂钩。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59321512

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档