DigitalPersona SDK:将EnrollmentForm图像传输到另一种形式

时间:2017-01-26 04:55:16

标签: c# forms winforms

我想做什么......

我正在开发一个包含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中将Formbox1设置为Form1公开,然后将以下代码放入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,并尝试将图像传输到主窗体并且它正常工作。

2 个答案:

答案 0 :(得分:2)

步骤1:在enrollmentForm中创建一个类似enImage的图像类型公共变量,并在注册表单中将结束事件设置为enImage = yourpictureboxcontrolname.Image;

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

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

我测试了这段代码并且它正在运行。

答案 1 :(得分:0)

在您的主要表格中,创建一个属性,即

    public Image img 
    {
        set { pictureBox1.Image = value; } 
    }

当您在某个事件处理程序中调用第二个表单时,请传递当前表单的引用,您需要在该表单上显示该图像,即

    private void button1_Click_1(object sender, EventArgs e)
    {
        Form2 fm2 = new Form2(this);
        fm2.Show();
    }

在您的第二个表格中,使用我们通过的参考资料初始化Form1

    private Form1 mainForm = null;
    public Form2(Form callingForm)
    {
        mainForm = callingForm as Form1;
        InitializeComponent();
    }

最后在第二张表格关闭之前,将图像设置为Form1,如

    private void Form2_FormClosing(object sender, FormClosingEventArgs e)
    {
        this.mainForm.img = pictureBox1.Image;
    }

这是经过测试的代码,它100%有效。 希望它有所帮助。