none
Referencia a un miembro no compartido requiere una referencia de objeto RRS feed

  • Pregunta

  • tengo ste simple código y no entiendo que error tiene

    CoorX = Graphics.MeasureString("dfsdf", fuente).Height

    el error me lo marca en graphics.measurestring

    martes, 12 de septiembre de 2017 17:15

Respuestas

  • "RHCRD" preguntó:

    > tengo ste simple código y no entiendo que error tiene
    >
    > CoorX = Graphics.MeasureString("dfsdf", fuente).Height
    >
    > el error me lo marca en graphics.measurestring

    Hola:

    Digo yo que tendrás escrito más que ese "simple código" que has publicado. ;-)

    Es normal que obtengas ese error, porque deberías de saber que el método MeasureString de la clase Graphics es un método de instancia, no se encuentra declarado como compartido (Shared), por lo que necesitas una instancia de la clase Graphics para poder acceder a él, tal y como muestra el siguiente ejemplo:

        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    
            ' Referenciamos el objeto Graphics del formulario
            ' donde actualmente se está ejecutando éste código:
    ' Dim grfx As Graphics = Me.CreateGraphics() Dim fuente As New Font(Me.Font.Name, 10, Me.Font.Style) Dim CoorX As Single = grfx.MeasureString("dfsdf", fuente).Height MessageBox.Show(CoorX.ToString()) End Sub

    Un saludo


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.



    martes, 12 de septiembre de 2017 17:28
    Moderador

Todas las respuestas

  • Hola RHCRD

    Graphics.MeasureString no es un recurdo compartido, por ello requieres una instancia algo como 

    Dim variable As New Graphics.MeauseString 

    y trabajar con dicha instancia, ya que esos errores suelen presentarse por ello.

    Saludos


    Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.

    martes, 12 de septiembre de 2017 17:19
  • "RHCRD" preguntó:

    > tengo ste simple código y no entiendo que error tiene
    >
    > CoorX = Graphics.MeasureString("dfsdf", fuente).Height
    >
    > el error me lo marca en graphics.measurestring

    Hola:

    Digo yo que tendrás escrito más que ese "simple código" que has publicado. ;-)

    Es normal que obtengas ese error, porque deberías de saber que el método MeasureString de la clase Graphics es un método de instancia, no se encuentra declarado como compartido (Shared), por lo que necesitas una instancia de la clase Graphics para poder acceder a él, tal y como muestra el siguiente ejemplo:

        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    
            ' Referenciamos el objeto Graphics del formulario
            ' donde actualmente se está ejecutando éste código:
    ' Dim grfx As Graphics = Me.CreateGraphics() Dim fuente As New Font(Me.Font.Name, 10, Me.Font.Style) Dim CoorX As Single = grfx.MeasureString("dfsdf", fuente).Height MessageBox.Show(CoorX.ToString()) End Sub

    Un saludo


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.



    martes, 12 de septiembre de 2017 17:28
    Moderador
  • "Bryan De La Cruz" escribió:

    > Graphics.MeasureString no es un recurdo compartido, por ello
    > requieres una instancia algo como
    >
    > Dim variable As New Graphics.MeauseString

    Hola, Bryan:

    De acuerdo que el método MeasureString no se encuentra compartido, pero no estoy de acuerdo con que se pueda crear una instancia de la clase Graphics con el operador New, ya que dicha clase no implementa ningún constructor público:

    Clase Graphics

    Tienes que referenciar un objeto Graphics mediante algún objeto que implemente un método CreateGraphics, o con cualquier otro nombre que devuelva una instancia válida de la clase Graphics.

    Un saludo


    Enrique Martínez Montejo
    [MS MVP - Visual Studio y Tecnologías de Desarrollo]

    Nota informativa: La información contenida en este mensaje, así como el código fuente incluido en el mismo, se proporciona «COMO ESTÁ», sin garantías de ninguna clase, y no otorga derecho alguno. Usted asume cualquier riesgo al poner en práctica, utilizar o ejecutar lo recomendado o sugerido en el presente mensaje.

    Si esta respuesta le ha resultado útil, recuerde marcarla como satisfactoria.

    Si usas Visual Basic .NET y deseas ser productivo y feliz, se inteligente y activa la instrucción
    Option Strict.

    martes, 12 de septiembre de 2017 17:36
    Moderador
  • Maestro! tiene usted mucha razón, omito mi sugerencia y agradecido por su aclaración

    Si ayudé a resolver tu consulta, no olvides marcar como respuesta y/o votar como útil.

    martes, 12 de septiembre de 2017 17:47
  • muchas gracias, en los ejemplos de MSDN Microsoft no esta bien explicado, pero tu explicación me ah servido de mucho
    martes, 12 de septiembre de 2017 18:32