2016-06-28 3 views
0

J'essaie d'accéder à une fonction qui appartient à une frmamain de classe d'une autre classe. s'il vous plaît quelqu'un peut-il me dire comment je dois y parvenir? Je suis nouveau à VB.NET. Merci d'avance.Comment accéder à une fonction d'une classe à l'extérieur dans VB.NET

Le code génère l'erreur suivante

"ConvertImagerBnW() n'est pas déclarée. Il peut être inaccessible en raison de son niveau de protection"

class frmamain 
Public Function ConvertImagerBnW() 

    Try 
     Dim img As Bitmap = New Bitmap((Image.FromFile("D:\\imgnam.jpg"))) 
     ''Dim img As Bitmap = New Bitmap(ImageBox1.Image) 
     Dim c As Color 
     Dim i As Integer = 0 
     Do While (i < img.Width) 
      Dim j As Integer = 0 
      Do While (j < img.Height) 
       c = img.GetPixel(i, j) 
       Dim r As Integer = 0 
       r = Convert.ToInt16(c.R) 
       Dim g As Integer = 0 
       g = Convert.ToInt16(c.G) 
       Dim b As Integer = 0 
       b = Convert.ToInt16(c.B) 
       Dim ans As Integer = ((r _ 
          + (g + b)) _ 
          /3) 
       If (ans > 128) Then 
        r = 255 
        g = 255 
        b = 255 
       Else 
        r = 0 
        g = 0 
        b = 0 
       End If 
       c = Color.FromArgb(r, g, b) 
       img.SetPixel(i, j, c) 
       j = (j + 1) 
      Loop 
      i = (i + 1) 
     Loop 
     ''Image<Gray, Byte> normalizedimg = new Image<Gray, Byte>(img); 
     img.Save("D:\\imgnamNew.jpg") 
     Dim Bmp1 As New Image(Of Bgr, [Byte])("D:\\imgnamNew.jpg") 
     ImageFrame = Bmp1 
     ''ImageBox1.Image = ImageFrame 
     ''ImageBox1.Image.Save("D:\\imgnamNew.jpg") 
     '' MessageBox.Show("SUCESSFULLY DONE") 
    Catch ex As Exception 
     MessageBox.Show(ex.Message) 
    End Try 

End Function 
end class 


Module UseThread 
    Sub newthread() 
     ConvertImagerBnW() 
    End Sub 
End Module 
+0

Rendre l'accès de la méthode publique .... –

+0

*** "Je suis nouveau dans VB.Net" *** Nous avons besoin de voir ce que vous avez écrit jusqu'à présent ... il semble que le problème ne soit pas lié avec .net mais avec SoftDevel ... –

+0

oui j'ai fait les mêmes changements mais ne fonctionne pas – NikRock

Répondre

0

ConvertImagerBnW est membre de la classe frmamain si vous devez l'appeler sur une instance de cette classe. Ceci:

Module UseThread 
    Sub newthread() 
     ConvertImagerBnW() 
    End Sub 
End Module 

ne sait rien sur frmamain. A c'est plus simple, vous devez faire quelque chose comme ceci:

Module UseThread 
    Sub newthread() 
     frmamain.ConvertImagerBnW() 
    End Sub 
End Module 

qui appellera cette méthode sur l'instance par défaut de frmamain, en supposant que c'est une forme. Si ce n'est pas l'instance par défaut ou ce n'est pas une forme alors vous avez besoin d'accéder à une forme d'instance quelque part. Cela pourrait ressembler à ceci:

Module UseThread 
    Sub newthread() 
     Dim obj As New frmamain 

     obj.ConvertImagerBnW() 
    End Sub 
End Module 

Si vous voulez appeler la méthode sur une instance existante plutôt que d'une nouvelle instance, vous auriez alors à obtenir une référence à cette instance de quelque part. Exactement comment vous feriez cela dépend des spécificités de votre projet.

+0

Merci à tous pour m'avoir répondu ça marche. @jmcilhinney – NikRock