我正在尝试做的...

我正在研究一个包含DigitalPersona SDK CaptureForm和EnrollmentForm的项目。该项目还包括一个主窗体,出于这个问题的考虑,我们将其称为Form1。此表单包括一个名为picturebox1的图片框和一个名为button1的按钮。当我单击button1时,将执行以下代码。

private void button1_Click(object sender, EventArgs e)
{
    EnrollmentForm enroll = new EnrollmentForm();
    enroll.ShowDialog();
}


在EnrollmentForm中,我具有DigitalPersona SDK中提供的控件设置。它在称为“图片”的图片框中捕获精细的指纹。我想做的就是做到这一点,以便当我关闭EnrollmentForm时,将在图片框中捕获的图像转移到Form1上的图片框中。

我尝试过的...

我已经尝试过许多在stackoverflow和Google上找到的示例。第一种是创建一个FormClosing事件,并尝试将图像从EnrollmentForm传递到Form1。我这样做是通过在Form1.Designer.cs中公开公开Form1上的picturebox1,然后将以下代码放入EnrollmentForm中来实现的。

private void EnrollmentForm_FormClosing(object sender, FormClosingEventArgs e)
{
    Form1 frm = new Form1();
    frm.picturebox1.Image = Picture.Image;
}


这样编译就没有问题,但是一旦捕获了图像并关闭了表单,该图像就永远不会传输到Form1。在做进一步的研究时,我发现了一篇文章,当模态打开第二种形式时,提出了以下方法。

在Form1中,我将button1_Click修改为如下所示。

private void button1_Click(object sender, EventArgs e)
{
    EnrollmentForm enroll = new EnrollmentForm();
    enroll.ShowDialog();
    picturebox1.Image = enroll.SelectedImage;
}


然后在EnrollmentForm中,添加了以下代码。

public Image SelectedImage
{
    get { return Picture.Image; }
}


再次,此编译。指纹被捕获,但是当EnrollmentForm关闭时,图像从未传输到Form1上的picturebox1。

我真的不确定在这里我做错了什么。最终,Form1将包含多个图片框,并将利用EnrollmentForm来填充每个图片框。感谢您的协助。

面向未来读者的更新:只是以为我会添加最终有用的内容。事实证明,SDK的EnrollmentForm从CaptureForm获取图片。我最终使按钮改为打开CaptureForm,并尝试将图像传输到主表单,并且它可以正常工作。

最佳答案

第1步:在EnrollmentForm中创建一个图像类型的公共变量,例如enImage,然后在注册表单的Closing事件中将其设置为enImage = yourpictureboxcontrolname.Image;

步骤2:在主窗体中,创建另一个名为mainImage的图像类型变量,并在按钮click事件中添加此代码

EnrollmentForm enroll = new EnrollmentForm();
enroll.ShowDialog();
mainImage = enroll.enImage;
picturebox1.Image=mainImage;


我测试了这段代码,它正在工作。

10-01 04:44