2016-06-27 11 views
-1

vb.netコードを完全にc#コードに変換していないので、vb.net dllを作成してC#フォームに追加することにしました。C#でvb.net dllを使用します。 vb.net dllからC#形式のオブジェクトにアクセスするには?

しかし、私はこのdllについて新しいことを教えてください。そして、C#形式のオブジェクトにアクセスする方法はわかりません。私はdllのためにやったように、dllの参照にC#アプリケーションを追加しました。しかし、私はまだC#アプリケーションにある2つのラベルとタイマーにアクセスできません。

は、これは私がC#のを変換しようとした

Public Class Class1 
    Public Sub Bypass(block1 As String, block2 As String, ok1 As String, ok2 As String) 
     Try 
      Dim folderPath As String = Environment.GetFolderPath(SpecialFolder.Windows) 
      FileSystem.FileClose(New Integer() {1}) 
      FileSystem.FileClose(New Integer() {2}) 
      If My.Computer.FileSystem.FileExists((folderPath & "\xspirit.sys")) Then 
       FileSystem.FileOpen(1, (folderPath & "\xspirit.sys"), OpenMode.Append, OpenAccess.ReadWrite, OpenShare.LockReadWrite, -1) 

      Else 
       File.WriteAllBytes((folderPath & "\xspirit.sys"), New Byte() {0}) 
       FileSystem.FileOpen(1, (folderPath & "\xspirit.sys"), OpenMode.Append, OpenAccess.ReadWrite, OpenShare.LockReadWrite, -1) 
       block1 = "Erişim Engellendi" 
       MsgBox("Erişim Engellendi xspirit") 
      End If 
      If My.Computer.FileSystem.FileExists((folderPath & "\xhunter1.sys")) Then 
       FileSystem.FileOpen(2, (folderPath & "\xhunter1.sys"), OpenMode.Append, OpenAccess.ReadWrite, OpenShare.LockReadWrite, -1) 

      Else 
       File.WriteAllBytes((folderPath & "\xhunter1.sys"), New Byte() {0}) 
       FileSystem.FileOpen(2, (folderPath & "\xhunter1.sys"), OpenMode.Append, OpenAccess.ReadWrite, OpenShare.LockReadWrite, -1) 
       block2 = "Erişim Engellendi" 
       MsgBox("Erişim Engellendi xhunter1") 
      End If 
     Catch exception1 As Exception 
      ProjectData.SetProjectError(exception1) 
      Dim ex As Exception = exception1 
      ProjectData.SetProjectError(ex) 
      Dim exception As Exception = ex 
      ProjectData.ClearProjectError() 
      ProjectData.ClearProjectError() 
     End Try 
     Dim p As Process() 
     p = Process.GetProcessesByName("Wolfteam.bin") 'set wolfteam process 
     If p.Count = 1 Then ' if wolfteam process detected 
      ok1 = "XignCode Clear Başarılı" 
      ok2 = "XignCode Clear Başarılı" 
      MsgBox("XignCode Clear Başarılı xspirit") 
      MsgBox("XignCode Clear Başarılı xhunter1") 
     End If 
    End Sub 
End Class 

私vb.netのDLLですが、私は完全にそれを行うカントので、私はこのコードで私のDLLからオブジェクトにアクセスしようとしましたが、私が行うことができませんでしたそれは(私は参考にそれを追加しました)。私は実際にこれを書きたかった(ここまではその大丈夫しかし、私はこのcode.Itはそれの残りの部分を受け入れていない継続カント)

C#app.Form1

C#app.Form1.Timer1.Enabled = False or C#app.Form1.label1.Text = "test" 

私は試しました:

Dim test1 As String="test" 

'then acces them from C# and then: 
vbnetdll.Class1 tt = new vbnetdll.Class1(); 
label1.Text=f.vbmethod.test1; 

しかし、私はこれを行うことができませんでした。それは受け入れないので。なにが問題ですか?デフォルトでは

+0

あなたの質問に答えるのは申し訳ありませんが、なぜすべてを翻訳できないのか不思議です。 翻訳機を試しましたか? –

+1

全く違いはありません。 C#とVB.NetはどちらもMSILにコンパイルされます。あなたはちょうどdllを参照し、他のC#dllのようにそのオブジェクトを使い始めます。 – coding4fun

+0

ええ、実際にはうまくいきませんでした:/私は自分で翻訳しようとしましたが、どこでも翻訳できませんでした。私はdllを追加することができますが、とにかく感謝を知っています。しかし、私は何かdiffirentを尋ねました。) – SodaX

答えて

0

あなたはこのようなことは、フォームのクラスにプライベートフィールドとして宣言されているフォームに項目を追加:

private System.Windows.Forms.Label label1; 

だから、フォームを参照する別のアセンブリからアクセスすることはないだろう。実際にはC#vs vb.netとは関係ありません。

+0

しかし、私はそれらをpublicに変更しました。 – SodaX

+0

実際に私はもう一度チェックし、私はそれを変えたことを見ました。これらはForm1.Designer.csのコードです。private System.Windows.Forms.Button btnExit; private System.Windows.Forms.Button btnBrowse; private System.Windows.Forms.OpenFileDialog opnPath; public System.Windows.Forms.Label label1; public System.Windows.Forms.Label label2; public System.Windows.Forms.Timer tmrBypass; – SodaX

関連する問題