Comment limiter un nombre dans un TextBox ?

Résolu
Micoute - 14 févr. 2013 à 16:19
 Utilisateur anonyme - 15 févr. 2013 à 11:58
Bonjour à tous,

j'aimerais savoir s'il est possible de limiter un nombre dans un TextBox, car pour mon programme de conversion d'heures et minutes en heures et centièmes de limiter les minutes à 59 et les centièmes à 99.

Je vous remercie par avance de votre aide précieuse à mes yeux.


Tout homme doit être poli ; mais il doit aussi être libre.

8 réponses

Voici le code correspondant à ce que je vous ai expliqué.

Imports System.Math
Public Class Accueil
    Dim H As Integer, C As Integer, M As Integer, D As Double

    Private Sub ConversionDéciVersSexa()
        Dim x As Integer
        D = (H + C / 100) * 60
        x = CInt(Truncate(D))
        D = DivRem(x, 60, M)
    End Sub

    Private Sub ConversionSexaVersDéci()
        Dim x As Integer
        D = (H + M / 60) * 100
        x = CInt(Truncate(D))
        D = DivRem(x, 100, M)
    End Sub

End Class


Cordialement.

Étant illettré, je signe d'une croix : ×
3
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
14 févr. 2013 à 19:23
Bonjour,

Regardes aussi le contrôle NumericUUpDown, il t'aidera peut être.

v----Signature--------v----------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices.[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : ).[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés/list
---
3
Utilisateur anonyme
15 févr. 2013 à 03:20
Bonjour,

Tout en partageant l'idée de NHenry, voici donc un petit exemple. Cela prend un TextBox et un bouton. J'ai bien essayé de faire une version bouclant automatiquement. Mais ce que je pensais qui devait marcher, me donnait toujours une boucle sans fin. Cela fait que j'ai oublié l'histoire de la boucle.

Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim maximum As Integer = 59
        'Ou bien
        'dim maximum As Integer = 99
        Dim valeur As Integer = CInt(TextBox1.Text)
        Dim trophaut As Boolean = EstCeTrop(valeur, maximum)
        If trophaut = True Then
            MessageBox.Show("La valeur indiquée est trop élevée")
            TextBox1.Text = String.Empty
        Else
            MessageBox.Show("La valeur indiquée est acceptable")
        End If
    End Sub
    Function EstCeTrop(valeur, maximum) As Boolean
        If valeur > maximum Then
            Return True
        Else
            Return False
        End If
    End Function
3
Bonjour à tous.

Je voudrais attirer l'attention sur la fonction DivRem, dont j'avais toujours rêvé qu'elle existât en vb6. Son sens est le suivant
Quotient = DivRem(Dividende, Diviseur, Reste)

le troisième argument étant déclaré ByRef pour pouvoir être récupéré. C'est donc par essence la fonction qui traite la division avec reste (encore nommée division entière). Or cette division est la clé du codage/décodage arithmétique.



Étant illettré, je signe d'une croix : ×
3

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
14 févr. 2013 à 17:49
Salut

tu peux limiter le nombre de caractères
textbox.maxlength
ou soit utilise le numericupdown control
0
Bonjour Micoute.

Je crains fort que votre question soit mal posée, et ceci pour deux raisons.
a) Les TextBox ne servent que d'afficheurs dans votre problème. Ce qu'il faut limiter, ce sont des entiers à afficher dans ce qu'il vous plaira, et pourquoi pas des TextBox. Mais parler de limitation dans un TextBox serait supposer c'est ce contrôle qui pourrait se charger de la limitation.
b) Les entiers à afficher sont
le nombre d'heures H,
le nombre de centièmes C,
le nombre de minutes M.

Lorsqu'une durée D (un nombre réel, qui en général ne peut être qu'approximativement exprimée par des entiers) est décrite par H et C, sa valeur est
D = H + C/100 exprimée en décimal

Si par contre elle est décrite par H et M,
sa valeur est
D = H + M/60 exprimée en sexadécimal

Les limitations que vous souhaitez viendront toutes seules si vous procédez mathématiquement aux conversions.
Pour convertir le décimal en sexadécimal, vous exprimez la durée D en minutes, vous tronquez le nombre obtenu à l'entier le plus proche, et vous faites la division avec reste de cet entier par 60. Le reste vous donnera M, et le quotient vous donnera H. Vous procédez de la même manière pour la conversion inverse.
La classe Math contient tout ce qu'il faut pour faire cela. Mais je ne saurais dire quoi de tête. Je vous quitte donc provisoirement.

À très bientôt.







Étant illettré, je signe d'une croix : ×
0
Bonjour à tous et merci beaucoup,

finalement, la meilleure solution c'est le contrôle NumericUpDown, car il ne délivre que des valeurs numériques entre 0 et maximum, j'ai malgré tout, mis des sécurités, car on peut taper les valeurs au clavier, ce qui n'exclue pas les caractères alphabétiques et dommage que je sois limité par mon savoir, car VB est très complet.

Merci encore pour vos enseignements qui me sont très profitables.

Tout homme doit être poli ; mais il doit aussi être libre.
0
Utilisateur anonyme
15 févr. 2013 à 11:58
j'ai malgré tout, mis des sécurités, car on peut taper les valeurs au clavier, ce qui n'exclue pas les caractères alphabétiques

Tu peux donner un exemple de ce phénomène ? Je viens de tester ce composant et il n'y a pas de problème particulier.
0
Rejoignez-nous