2017-09-10 9 views
-2

J'ai besoin d'un champ Texte de mon programme pour être traité comme une variable de type LONG et être traité dans une opération mathématique. La valeur de cette variable doit être spécifiée à chaque fois par l'utilisateur et je veux que le programme traite cette valeur non pas comme un entier, mais comme un long effet.C# - Comment obtenir une variable de type long définie par l'utilisateur dans un TextBox et l'utiliser dans une opération mathématique

J'ai traité d'autres domaines comme entier et ils fonctionnent très bien avec ce genre de code:

HourField.IntValue 

Remarquez maintenant que .IntValue qui dit évidemment au programme de prendre le contenu du HourField tout ce qui est en elle et le traiter comme un entier. Mais malheureusement il n'y a pas d'équivalent pour le type long en fait si j'essaie d'écrire .LongValue, C# ne reconnaît pas cette fonction .... il y a d'autres fonctions similaires comme .FloatValue ou .DoubleValue etc. mais il n'y a pas de une chose telle que .LongValue. Cependant, je même essayé d'utiliser ce type de syntaxe:

Convert.ToInt64(FileSizeBytesField); 

ou quelque chose comme ça et, en théorie, le compilateur ne me donne pas d'erreur pour la compilation etc. mais si je tente de faire réellement le calcul par en appuyant sur le bouton le programme se bloque et Visual Studio me dit que le type de casting est invalide. S'il vous plaît, s'il vous plaît, s'il vous plaît, aidez-moi avec ça. C'est la dernière chose dont j'ai besoin pour terminer mon programme !!!

P.s. Je poste des captures d'écran de ce que j'ai et de mon code source. Merci

program's source code

Debugging error in Visual Studio after program crash

+0

est FileSizeBytesField une chaîne? Si ce n'est pas le cas (s'il s'agit d'un contrôle, etc.), récupérez la valeur de la chaîne et transmettez-la à ToInt64. – jdigital

+0

Salut bien en fait non parce que sinon le compilateur me donne des erreurs en disant que je ne peux pas utiliser une chaîne pour être dans une expression mathématique et je pense avoir besoin de casting, tu sais que je commence avec C# et je ne suis pas trop sûr encore comment cela fonctionne mais j'ai une idée approximative. mais j'ai essayé d'assigner FileSizeBytesField comme une chaîne et autant que je me souvienne que cela n'a pas fonctionné. Je ne l'ai pas déclaré comme une variable Je veux juste prendre le contenu de la boîte et traiter celui-ci comme une donnée de type long. –

+0

Quels sont les types de données de 'HourField' et' FileSizeBytesField'? –

Répondre

1

Je suppose que le FileSizeBytesField vous essayez de prendre une valeur à partir d'une instance de NSTextField ou d'une autre sous-classe de NSControl. In that case, vous pouvez prendre la valeur du contrôle en utilisant des propriétés telles que IntValue ou StringValue. Donc, pour convertir la valeur en long de type essayez ceci:

Convert.ToInt64(FileSizeBytesField.StringValue) 

Ou, en utilisant l'approche plus commune déjà suggérée par Hooman Bahreini:

long fileSizeBytes; 
if (long.TryParse(FileSizeBytesField.StringValue, out fileSizeBytes)) 
{ 
    // use fileSizeBytes 
} 
1

Vous pouvez utiliser Parse, pour convertir la valeur de chaîne à longue

long l = long.Parse("453216"); 

Si vous voulez vous assurer que votre entrée est un numéro valide, vous pouvez utiliser tryParse

if (long.TryParse("45263572", out l) == true) 
{ 
    // use long value 
} 
else 
{ 
    // input is not a valid long value... handle the situation here 
} 
+0

Salut, merci pour votre commentaire. Eh bien oui cela semble au moins résoudre les plantages mais le problème que je reçois est qu'apparemment quand je mets cette valeur numérique au type long il utilise cette valeur TOUS LES TEMPS indépendamment de ce que l'utilisateur entre dans la Text Box et je ne veux que je veuille prendre un nombre variable à chaque fois et l'utiliser avec une expression mathématique qui est tout mais il doit être long évidemment merci –

+1

Quel est le type de FileSizeFiled? Vous devez obtenir la valeur de chaîne de FileSizeFiled et la convertir en long. Par exemple, si FileSizeFiled est une zone de texte, vous utiliserez: long.Parse (FileSizeField.Text) dans votre expression mathématique. – Sarhang

+0

Salut, oui c'est une zone de texte bien que je suppose que c'est comme ça que vous le feriez sur Visual Studio sous Windows mais dans ce cas j'utilise la version pour Mac et pour une raison quelconque n'accepte pas le format TextBox.Text .. .:/par la façon dont je vais essayer de faire long.Parse (FileSizeField) et voir si cela fonctionne. P.s. FileSizeField est bien sûr le nom que j'ai donné à la zone de texte où l'utilisateur devra donner l'entrée. –