2016-06-28 3 views
0

다른 클래스의 클래스 frmamain에 속한 함수에 액세스하려고합니다. 아무도 내가 이걸 어떻게해야하는지 말해 줄 수 없어? 나는 VB.NET을 처음 사용한다. 미리 감사드립니다.VB.NET에서 외부 클래스의 함수에 액세스하는 방법

코드는 다음과 같은 오류를 발생

"ConvertImagerBnW는() 선언되지 않았습니다. 그것은 액세스 할 수 있습니다 인해 보호 수준"

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

public 메서드에 액세스 할 수 있도록합니다 .... –

+0

*** "VB.Net의 새로운 기능입니다."*** 지금까지 작성한 내용을 확인해야합니다 ... 문제와 관련이없는 것 같습니다. .net하지만 SoftDevel과 함께. –

+0

예. 동일한 변경을했지만 작동하지 않았습니다. – NikRock

답변

0

ConvertImagerBnWfrmamain 클래스의 멤버 그래서 당신은 실제로 그 클래스의 인스턴스에서 호출해야합니다. 이것 :

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

frmamain에 대해 아무것도 모릅니다. 이 간단한이다, 당신은 같은 것을 할 필요가 :

이 양식의 가정, frmamain의 기본 인스턴스에서 해당 메소드를 호출

Module UseThread 
    Sub newthread() 
     frmamain.ConvertImagerBnW() 
    End Sub 
End Module 
. 기본 인스턴스가 아니거나 양식이 아닌 경우 인스턴스 양식에 어딘가에 액세스해야합니다. 즉 다음과 같습니다

Module UseThread 
    Sub newthread() 
     Dim obj As New frmamain 

     obj.ConvertImagerBnW() 
    End Sub 
End Module 

을 당신은 당신이 어디에서 해당 인스턴스에 대한 참조를 가져해야 할 것 기존 인스턴스가 아닌 새로운 인스턴스의 메소드를 호출합니다. 정확히 어떻게 할 것인지는 프로젝트의 특성에 달려 있습니다.

+0

답장을 보내 주셔서 감사합니다. @jmcilhinney – NikRock

관련 문제