Perdón, quería postear en .NET y me equivoqué, ¿Me lo mueven ?, sorry >:D
Bueno pues en este sub manejo un numericupdown y un combobox
Lo que intento es, que al escribir un número mayor de "X" en el numericupdown, mostrar una pequeña alerta para indicar que no se puede aumentar el valor.
El problema es que, después de alertar una primera vez, el tooltip sigue mostrando las alertas aunque la condición no se cumpla:
(http://img46.imageshack.us/img46/1817/prtscrcapturer.jpg)
El code:
' NumericUpDown Time / ComboBox Time Measure
Private Sub ComboBox_Measure_SelectedIndexChanged(sender As Object, e As EventArgs) Handles _
ComboBox_Measure.SelectedIndexChanged, _
NumericUpDown_Time.ValueChanged
Select Case ComboBox_Measure.SelectedIndex
Case 0
' Seconds
Time_Out = (Convert_Time(NumericUpDown_Time.Value, S, MS))
Time_Measure = S
Case 1
' Minutes
If NumericUpDown_Time.Value >= 35793 Then NumericUpDown_Time.Value = 35792 : GoTo ToolTip
Time_Out = (Convert_Time(NumericUpDown_Time.Value, M, MS))
Time_Measure = M
Case 2
' Hours
If NumericUpDown_Time.Value >= 597 Then NumericUpDown_Time.Value = 596 : GoTo ToolTip
Time_Out = (Convert_Time(NumericUpDown_Time.Value, H, MS))
Time_Measure = H
Case 3
' Days
If NumericUpDown_Time.Value >= 25 Then NumericUpDown_Time.Value = 24 : GoTo ToolTip
Time_Out = (Convert_Time(NumericUpDown_Time.Value, H, MS)) * 24
Time_Measure = H
Case 4
' Weeks
If NumericUpDown_Time.Value >= 4 Then NumericUpDown_Time.Value = 3 : GoTo ToolTip
Time_Out = (Convert_Time(NumericUpDown_Time.Value, H, MS)) * 168
Time_Measure = H
End Select
Exit Sub
ToolTip:
'ToolTip1.Active = True
'ToolTip1.SetToolTip(Me.NumericUpDown_Time, "Max value")
ToolTip1.Show("Max value", Me.NumericUpDown_Time, 1500)
'ToolTip1.Hide(Me.NumericUpDown_Time)
'ToolTip1.Active = False
End Sub
Mmm esos Goto no quedan muy bonito.
Pone ToolTip1.Hide(Me.NumericUpDown_Time) antes del Select case.
Si antes estaba oculto, seguira oculto, si antes tenia un mensaje, se ocultara y luego en los ifs vera si se muestra de nuevo o no, pero esa decision la hace mas rapido que lo que pestañamos por lo que es lo mismo xD
Cita de: $Edu$ en 24 Marzo 2013, 01:18 AM
Pone ToolTip1.Hide(Me.NumericUpDown_Time) antes del Select case.
nada, no me sirvió xD
Hola!
Bueno no estoy muy seguro, porque no conozco este lenguaje como corresponde (Como ya te lo he dicho en otras ocasiones) Pero me di cuenta en que en todos los case, vas a Tooltip si o si, y si no me equivoco ese tooltip lanza la alerta? Porque cada vez que vayas a tooltip la alerta se mostrara sin ninguna condicion porque le estas diciendo que vayas ahi en el case.
Bueno es lo que entendi, pero puedo estar equivocado :xD
Saludos
No te preocupes DonVidela, cualquier comentario es bien recibido.
Pero no es como comentas, sólo llamo al tooltip cuando se cumple la condición, y antes de la etiqueta del ToolTip está la instrucción "Exit Sub" precísamente para que no suceda lo que comentas.
En resumen ese tooltip no se muestra siempre, se muestra cuando una de las condiciones se cumple (Lo he comprobado, hasta aquí todo bien), el problema es que después de mostrarse por primera vez, se sigue mostrando SIEMPRE aunque no se den las condiciones, ya puedo tratar de ocultarlo o desactivarlo o "disposarlo", pero no conseguiré nada porque se sigue mostrando cuando coloco el puntero del mouse encima del numericupdown, dándome por cu... xD
>:(
Un saludo!
Yo sigo creyendo que tengo razon xD
Debes tener algun error que no nos estas contando, cuando dices "cuando coloco el puntero del mouse encima del numericupdown" no es otro evento ese? no tendras algo ahi? :S
@$Edu$
Si pregunto es porque no puedo encontrar el fallo o el error así que no puedo estar 100% seguro, pero por otro lado te aseguro que no tengo ningún evento asociado al ToolTip u otros eventos a esos controles ni nada extraño,
el único trozo de código donde uso el Tooltip es el que he mostrado, una sola línea xD.
Si el ToolTip sale cuando paso el mouse por el control, es porque lo especifico como parámetro aquí:
ToolTip1.Show("Max value", Me.NumericUpDown_Time, 1500)
EDITO: El ToolTip lo agrego desde el designer, y los atributos del ToolTip son los que se usan por defecto (Aunque he probado a modificarlos..).
:(
Pero esa linea que pones, se tiene que generar en el evento que has dejado, y ese evento no es cuando pasas el mouse por arriba, es cuando haces click, o me equivoco? Con solo pasar el mouse no tendria que cambiar nada, no se ejecutaria nada.
Cita de: $Edu$ en 24 Marzo 2013, 16:19 PM
Pero esa linea que pones, se tiene que generar en el evento que has dejado, y ese evento no es cuando pasas el mouse por arriba, es cuando haces click, o me equivoco? Con solo pasar el mouse no tendria que cambiar nada, no se ejecutaria nada.
Ahí está el problema, yo provoco que aparezca el tooltip sobre el control cuando de alguna manera el número séa mayor de "X", ya séa haciendo click o escribiendo dentro, pero luego ya no debería mostrarse más...
De todas formas ya está, me sirvió la idea que tuviste Edu, usando otro método antes del Case:
ToolTip1.Show("", Me.NumericUpDown_Time, 0)
No sé si eso será muy correcto, pero desde luego ahora funciona como debe, no se sigue mostrando el tooltip.Gracias
Slaudos.
RECTIFICO, SE SIGUE MOSTRANDO, YA NO SÉ QUE DEBO HACER.
El metodo Hide pensaba que ocultaba pero solo oculta si se estaba mostrando pero despues vuelve a aparecer, por eso no andaba.
Cambia eso que has puesto por ToolTip1.Active = false, es decir antes del Select Case.
Y en la etiqueta ToolTip: tendras que descomentar lo de ToolTip1.Active = True para que se vuelva a activar.
De la manera que me indicas, inactivandolo antes del case y activandolo en la etiqueta se consigue una mejora pero sigue habiendo problemas, ahora el tooltip sólo se muestra cuando la considión se cumple y se sigue mostrando si no disminuyo el valor, es decir, si no clicko en la flecha "abajo" del numericupdown.
Al final he tenido que hacer un timer para solucionarlo del todo, aquí dejo la solución:
Private Sub ComboBox_Measure_SelectedIndexChanged(sender As Object, e As EventArgs) Handles _
ComboBox_Measure.SelectedIndexChanged, _
NumericUpDown_Time.ValueChanged
Select Case ComboBox_Measure.SelectedIndex
Case 0
' Seconds
Time_Out = (Convert_Time(NumericUpDown_Time.Value, S, MS))
Time_Measure = S
Case 1
' Minutes
If NumericUpDown_Time.Value >= 35793 Then NumericUpDown_Time.Value = 35792 : GoTo ToolTip
Time_Out = (Convert_Time(NumericUpDown_Time.Value, M, MS))
Time_Measure = M
Case 2
' Hours
If NumericUpDown_Time.Value >= 597 Then NumericUpDown_Time.Value = 596 : GoTo ToolTip
Time_Out = (Convert_Time(NumericUpDown_Time.Value, H, MS))
Time_Measure = H
Case 3
' Days
If NumericUpDown_Time.Value >= 25 Then NumericUpDown_Time.Value = 24 : GoTo ToolTip
Time_Out = (Convert_Time(NumericUpDown_Time.Value, H, MS)) * 24
Time_Measure = H
Case 4
' Weeks
If NumericUpDown_Time.Value >= 4 Then NumericUpDown_Time.Value = 3 : GoTo ToolTip
Time_Out = (Convert_Time(NumericUpDown_Time.Value, H, MS)) * 168
Time_Measure = H
End Select
Exit Sub
ToolTip:
Dim ToolTips_Timer As New Timer
ToolTips_Timer.Interval = 1500
AddHandler ToolTips_Timer.Tick, AddressOf ToolTips_Timer_Tick
ToolTip_Form.Show("Max value", Me.NumericUpDown_Time, ToolTips_Timer.Interval)
ToolTips_Timer.Start()
End Sub
Private Sub ToolTips_Timer_Tick(sender As Object, e As EventArgs)
ToolTip_Form.RemoveAll()
sender.stop()
End Sub
Que se te ha complicado xD Es que yo no usaria eso, por lo que veo en la imagen mas o menos entiendo que quieres hacer y no usaria ningun ToolTip, solo bloquearia para que no se pueda poner un valor maximo, es decir, lo mejor siempre es forzar el control en vez de andar permitiendolo y dejando mensajes.
Pero soy muy detallista y además de denegar quise mostrar una advertencia en forma de Tooltip, sin advertencias más bien parecería un bug en vez de una limitación xD.
Salu2
Bueno, o poner un label en vez de un tooltip, yo en la imagen que dejaste pensaba al principio que seria un label eso. Pero bueno, si ya quedo bien, todo perfect :P