2016-06-27 2 views
-1

Я не могу полностью преобразовать код vb.net в код C#, поэтому я решил создать dll vb.net, а затем добавить его в форму C#.Используйте vb.net dll в C#. Как получить доступ к объектам в форме C# из dll vb.net?

Но я новый об этом dll вещи, и я не знаю, как получить доступ к объектам в форме C#. Я добавил приложение C# к ссылкам в dll, как и для DLL. Но я не могу получить доступ к таймеру и 2 меток, которые находятся в приложении C#.

Это моя длл vb.net

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 

Я попытался преобразовать C#, но я не могу сделать это полностью, так что я пытался получить доступ к объектам из моей библиотеки DLL с помощью этого кода, но я не мог сделать он (да, я добавил его к ссылкам).

C# app.Form1 (его хорошо, пока здесь, но я не могу продолжать этот code.It не принимает остальное)

Я хотел написать это на самом деле:

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

I Пробовал также:

Но я не мог этого сделать. Потому что он не принимает. Что не так?

+0

Извините, что не ответил на ваш вопрос, просто интересно, почему вы не можете перевести все? Вы пробовали переводить машины? –

+1

Нет абсолютно никакой разницы. C# и VB.Net скомпилируются до MSIL. Вы просто ссылаетесь на dll и начинаете использовать его объекты, как будто это была любая другая C# dll. – coding4fun

+0

Да, но на самом деле они плохо работали:/и я попытался перевести его сам, но я не смог перевести всюду. Я знаю, что вы можете добавить dll, но спасибо в любом случае. Но я спросил, что-то не так.) – SodaX

ответ

0

По умолчанию при добавлении элемента в форме он объявлен как частное поле в классе формы, а так:

private System.Windows.Forms.Label label1; 

Так что не будет доступен из другой сборки, которая ссылается на форму. Это фактически не имеет ничего общего с C# vs vb.net.

+0

Но я изменил их на публичные. Возможно, их события: P Так что нет пути? – 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