我正在使用Windows应用程序从VB迁移到C#;我正在使用数字人物指纹扫描器来捕获员工指纹,它工作得很好,但我无法在C#中获取OnEnroll事件-这是我在VB上做的。
这是我的VB代码
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事件
Handles enrollControl.OnEnroll我想在C#中实现同样的任务--以下是我到目前为止编写的代码:
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事件(“捕获完成”)。
提前谢谢。
发布于 2019-12-13 19:23:37
在将其添加到Controls集合之前,您可以像这样附加处理程序。
control.OnReaderDisconnect += EnrolControl_OnReaderDisconnected;C#使用+=操作符将处理程序绑定到事件,并使用-=将其解除挂钩。
https://stackoverflow.com/questions/59321512
复制相似问题