在c#中的Winform应用程序中使用dll

本文关键字:dll 应用程序 中的 Winform | 更新日期: 2023-09-27 18:29:41

我想知道如何在windows应用程序窗体中使用dll?

我想创建一种PhotoViewer,我必须将dll和GUI中的应用程序核心分开。因此,在我的GUI中,如果我单击给定的按钮,我将调用dll中相应的函数。

例如:

dll中允许加载图片的一种函数:

private void btn_browse_Click(object sender, System.EventArgs e)
{
    try
    {
       OpenFileDialog open = new OpenFileDialog();
       open.Filter = "Image Files(*.jpg; *.jpeg; *.gif; *.bmp)|*.jpg; *.jpeg; *.gif; *.bmp";
       if (open.ShowDialog()==DialogResult.OK)
       {
            pictureBox1.Image = new Bitmap(open.FileName);
       }
    }
    catch (Exception)
    {
        throw new ApplicationException("Failed loading image");
    }
}//End of the loading picture function

在这段代码中,问题是我的dll不知道gui中有一个图片框pictureBox1.图片!

最后,我不知道如何嵌套dll和gui。

感谢您的帮助;-)

在c#中的Winform应用程序中使用dll

要从动态链接库(DLL/.DLL)中为您在运行时决定的各种表单调用WinForm类(class MyForm : Form)(我认为这是您的要求,但谁知道呢),您需要使用System.Reflection并执行以下

if (bIfDllIsWinForm) 
{ 
    classInstance = Activator.CreateInstance(classType); 
    Form dllWinForm = (Form)classInstance; 
    dllWinForm.Show(); 
    // Invoke required method. 
    MethodInfo methodInfo = classType.GetMethod(strSomeMethodName); 
    if (methodInfo != null) 
    { 
        object result = null; 
        result = methodInfo.Invoke(classInst, new object[] { dllParams }); 
        return result.ToString(); 
    } 
else 
{ 
    // Else not a WinForm do something simalar. 
}    

您可以将类似的东西放入使用泛型的方法中,并在.dll.中传递要调用的相关方法名称

我希望这能有所帮助。