我想知道如何在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.Image!
最后我没有看到如何嵌套dll和gui。
感谢您的帮助; - )
答案 0 :(得分:1)
从动态链接库(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中要调用的相关方法名称。
我希望这会有所帮助。