2012-03-31 8 views
-3

私はWindowsアプリケーションフォームでdllをどのように扱うことができますか?Winformアプリケーションでdllを使用するC#

私は一種の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があることを知らないということです画像ボックスpictureBox1.ImageのGUI!

最後に、dllとguiの両方をネストする方法はわかりません。

は(私はこれがあると思いますが、実行時に決定し、様々な形のためのダイナミックリンクライブラリ(DLL/.dllファイル)内からのWinFormクラス(class MyForm : Form)を起動するに;-)あなたの助け

+0

dllのメソッドとは何ですか? pictureBoxをparmとしてdllメソッドに渡す必要があります。 – yieldvs

+0

Windowsアプリケーションの作成方法を知りたい場合は、これが便利です:http://apparchguide.codeplex.com/ – surfen

+0

以下のコードは、ロード時にボタンをクリックしたときに呼び出すdllのメソッドです絵。 – Quentin91360

答えて

1

をありがとう何を求めているが、誰が知っている)、あなたはあなたには、ジェネリックを使用する方法に、このような何か次

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. 
}  

ようSystem.Reflectionを使用して、いくつかのことを行うことができ可能性が必要として呼ばれるようにreleventメソッド名を渡しますあなたの.dll。

こちらがお役に立てば幸いです。

+0

ありがとう!それはまさに私が必要としていたものでした:-) – Quentin91360

+0

答えを受け入れる:]。 – MoonKnight

関連する問題