elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: ¿Eres nuevo? ¿Tienes dudas acerca del funcionamiento de la comunidad? Lee las Reglas Generales


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP) (Moderador: kub0x)
| | | |-+  Usar un NumericUpDown como valor de const
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Usar un NumericUpDown como valor de const  (Leído 6,293 veces)
SrTrp


Desconectado Desconectado

Mensajes: 323


Script/C#


Ver Perfil
Usar un NumericUpDown como valor de const
« en: 3 Agosto 2017, 18:18 pm »

Como puedo asignar el valor de un NumericUpDown como valor de una variable de const eh intentado hacerlo normalmente ajustando el valor de Numeric pero ni hací e intente haciendo una variable y tampoco, no se si debo definir una espicificacion del dato en la constante.
Código
  1.     Dim MD As Integer  = NumericUpDown5.Value
  2. Private Const mouted = MD
  3.  


« Última modificación: 4 Agosto 2017, 22:36 pm por SrTrp » En línea

ivancea96


Desconectado Desconectado

Mensajes: 3.412


ASMático


Ver Perfil WWW
Re: Usar un NumericUpDown como valor de const
« Respuesta #1 en: 3 Agosto 2017, 18:57 pm »

Un const es un valor que no cambia, y tiene que tener un valor fijo.

¿Por qué necesitas que sea un const?


En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.348


Ver Perfil
Re: Usar un NumericUpDown como valor de const
« Respuesta #2 en: 3 Agosto 2017, 19:06 pm »

Una constante, como su nombre indica es constante. Luego no puede adjudicarse ningún valor por procedimiento.

Cuando se compila el valor queda fijado... es decir todas las constantes con remplazadas por el valor contante. por eso siempre dará error cuando intentes asignarlo desde una ubicación que en sí misma no sea también una constante.

Es decir esto es válido:
Código
  1. Public Const c_Doce = 12
  2. Public Const c_Trece = (c_Doce +1)

Y es válido porque c_doce tiene un valor que es constante y c_doce +1 , al ser tanto c_doce y 1 valores constantes es válido.
Esto no es válido:
Código
  1. Public MiVar As integer = 12
  2. Public Const c_Doce = MiVar

En fin, tu debes saber si realmente necesitas una constante o una variable. Si has de asignar un valor desde un control numericUpDown, desde luego no es una constante lo que necesitas. O bien, no entiendes lo que significa constante.
Si todavía necesitas que el valor del control numericUpdown, quede en la constante, lo que debes hacer es revisar que valor tiene durante diseño y ese mismo valor consignarlo en la constante... que tiene numericUpDown5.Value = 52, pués vas a tu contante y le pones ese valor
Private Const mouted = 52

Pero no puedes asignarlo por código, porque entonces sería una variable.

Hay una solución pero no merece la pena en la mayoría de casos, aún así te la comento, por si soluciona tu caso (ya que siendo una variable, actúa realmente como una constante):

   
Código
  1. Private MiVar As Integer = 12
  2.  
  3.    Public Property Mouted As Integer
  4.        Get
  5.            Return MiVar
  6.        End Get
  7.        Set(ByVal value As Integer)
  8.            Static FirstTime As Boolean = False
  9.            If (FirstTime = False) Then
  10.                MiVar = value
  11.                FirstTime = True
  12.            'Else
  13.                 'Disparar error si se cree conveniente...
  14.            End If
  15.        End Set
  16.    End Property
  17.  
  18.  

Y que se utilizaría así:
Código
  1. Dim MD As Integer  = NumericUpDown5.Value
  2. Mouted = MD

Este código te permite asignar un valor procedente desde donde quieras, pero una sola vez, luego opera como si fuera una constante, se puede leer pero no escribir. y fíjate que por defecto, también le podemos dar inicialmente un valor...
En línea

Eleкtro
Ex-Staff
*
Desconectado Desconectado

Mensajes: 9.788



Ver Perfil
Re: Usar un NumericUpDown como valor de const
« Respuesta #3 en: 3 Agosto 2017, 19:19 pm »

Hola.

1. La propiedad NumericUpDown.Value es de tipo Decimal, no Integer. Puedes dejar que el compiler castee el tipo de forma implícita pero no es lo más apropiado. Deberías especificar la sentencia Option Strict On en tu código fuente... así te evitarás posibles errores humanos.

2. No puedes declarar la constante ya que eso no es un valor constante. Sencillamente.

Una solución alternativa de uso genérico seria declarar una propiedad de solo lectura... ( dependiendo claro está de los que realmente pretendas hacer ):

Código
  1. Public ReadOnly Property Mouted As Double
  2.    Get
  3.        If (Me.NumericUpDown5 IsNot Nothing) Then
  4.            Return Me.NumericUpDown5.Value
  5.        Else
  6.            Return 0.0R
  7.        End If
  8.    End Get
  9. End Property

O bien:
Código
  1. Public ReadOnly Property Mouted As Integer
  2.    Get
  3.        If (Me.NumericUpDown5 IsNot Nothing) Then
  4.            Return CInt(Me.NumericUpDown5.Value)
  5.        Else
  6.            Return 0I
  7.        End If
  8.    End Get
  9. End Property

...¿Y si nos explicas por qué quieres hacer eso?.

Saludos.
En línea

SrTrp


Desconectado Desconectado

Mensajes: 323


Script/C#


Ver Perfil
Re: Usar un NumericUpDown como valor de const
« Respuesta #4 en: 3 Agosto 2017, 19:29 pm »

Vaya tienen razón los 3 se los agradezco no tenia muy en claro como se usaba la constante y pues yo quiero que la "constante" en este caso ya sería una variable como me explican este actualizando su valor conforme vaya yo aumentando el valor del numericupdown
codigo
Código
  1. Public Class Form1
  2. 'ESTE ES QUE EDITE Y LES MOSTRE
  3.  Dim MD As Integer  = NumericUpDown5.Value
  4. Private Const mouted = MD
  5.  
  6. 'ACA ES EL NORMAL
  7.    Private Const mouted = 4
  8.    Private Const mouted1 = 2
  9.  
  10.  



Agrego intente con tipo de Decimal como me comento elektro pero aun así me da un error cabe en declarar  que todo lo estoy realizando desde una funcion.
Código
  1. Dim mouted1  As Decimal = NumericUpDown5.Value
  2. 'este es el error
  3. Referencia a objeto no establecida como instancia de un objeto.
« Última modificación: 3 Agosto 2017, 19:40 pm por SrTrp » En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.348


Ver Perfil
Re: Usar un NumericUpDown como valor de const
« Respuesta #5 en: 3 Agosto 2017, 20:34 pm »

Ten en cuenta que antes de poder asignar un valor a una variable procedente de un control, antes debe haberse creado la instancia del control...
...Esto es, desde qué procedimiento estás asignando el valor del NumericupDown.

No sé si el código que has puesto es consecuente o si son dos intentos distintos. si es consecuente (uno le sigue al otro, es decir ambos están en activos), si ya has declarado mouted1 como constante, no puedes utilizarlo al mismo nivel como otro tipo. Si lo usas en otro nivel, será sombreando al que esté en un nivel más arriba... es decir no será copia ni tendrá nada que ver con la otra declaración.

Por otro lado, poque no aprovechas el evento Change del control NumericUpDown, para actualizar el valor de esa variable?
Código
  1. private sub NumericUpDown5_Change(.....
  2.    Mouted = e.value ' ...o Mouted= NumericUpDown5.value si solo hay ese objeto enganchado al evento...
  3. end sub
En línea

SrTrp


Desconectado Desconectado

Mensajes: 323


Script/C#


Ver Perfil
Re: Usar un NumericUpDown como valor de const
« Respuesta #6 en: 3 Agosto 2017, 21:18 pm »

Ya lo hice mira como quedo, pero creo que no cambia el valor

Código
  1. Public MU As Integer
  2.    Public MD As Integer
  3.    Dim mouseclickup As Decimal = MU
  4.    Dim mouseclickdown As Decimal = MD
  5.  
Eso es en mi función

y ahora aca este desde el control de numeric
Código
  1. Private Sub NumericUpDown5_ValueChanged....
  2.        MU = NumericUpDown5.Value
  3.    End Sub
  4.  
  5.    Private Sub NumericUpDown4_ValueChanged...
  6.        MD = NumericUpDown4.Value
  7.    End Sub
« Última modificación: 3 Agosto 2017, 21:21 pm por SrTrp » En línea

Serapis
Colaborador
***
Desconectado Desconectado

Mensajes: 3.348


Ver Perfil
Re: Usar un NumericUpDown como valor de const
« Respuesta #7 en: 4 Agosto 2017, 00:33 am »

añade un messabox.message(mu.Tostring) a ambas funciones y ve cambiando valores al numeric a ver si cambia o no...

He de suponer que la declaración de MU y MD están en la misma clase que el control, no?????. Si no estás creando variables d eigual nombre en otra parte del proyecto...

Si tu código es así, con dos clases:

Código
  1. public class MisCosas
  2.  Public Md as decimal
  3.  
  4. '....
  5. End class
  6.  
  7. private class form1
  8.  
  9.    private sub NumericUpDown5_valuechanged(...
  10.          Md = NumericUpDown5.Value
  11.    En sub
  12. End class

Esto no va a funcionar...

Pero esto sí...
Código
  1. public class MisCosas
  2.  Public Md as decimal
  3.  
  4. '....
  5. End class
  6.  
  7. private class form1
  8.    private mc as new MisCosas
  9.  
  10.    private sub NumericUpDown5_valuechanged(...
  11.          mc.Md = NumericUpDown5.Value
  12.    En sub
  13. End class

Si tienes dudas muévete paso a paso pulsando F12... y así ves por donde pasa y por donde no...
En línea

SrTrp


Desconectado Desconectado

Mensajes: 323


Script/C#


Ver Perfil
Re: Usar un NumericUpDown como valor de const
« Respuesta #8 en: 4 Agosto 2017, 22:35 pm »

Listo muchas gracias solo cambie unas cosas de lo que me brindaste y quedo al 100  ;-)
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines