2013-07-08 2 views
1

У меня проблема с моим калькулятором скорости загрузки/выгрузки. Я записываю номера в «inputBox», и я думаю, что он не может его разобрать. Вот этот код:Вычисление ошибки загрузки/выгрузки

! ОБНОВЛЕНО!

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.Windows.Forms; 
using System.Text.RegularExpressions; 
using System.Net.NetworkInformation; 

namespace Tomco_DownloadTime { 
    public partial class Form1 : Form { 
     public Form1() { 
      InitializeComponent(); 
      timeLabel.Text = DateTime.Now.ToString("HH:mm tt"); 
     } 

     IPv4InterfaceStatistics stat = NetworkInterface.GetAllNetworkInterfaces() [0].GetIPv4Statistics(); 

     private double getKBDownloadSpeed() { 
      return (stat.BytesReceived)/1024; 
     } 

     private double getMBDownloadSpeed() { 
      return ((stat.BytesReceived)/1024)/1024; 
     } 

     private double getGBDownloadSpeed() { 
      return (((stat.BytesReceived)/1024)/1024)/1024; 
     } 

     private double getKBUploadSpeed() { 
      return (stat.BytesSent)/1024; 
     } 

     private double getMBUploadSpeed() { 
      return ((stat.BytesSent)/1024)/1024; 
     } 

     private double getGBUploadSpeed() { 
      return (((stat.BytesSent)/1024)/1024)/1024; 
     } 

     private void startButton_Click(object sender,EventArgs e) { 
      this.Width = 335; 
      this.Height = 154; 
      double size = double.Parse(inputBox.Text); 

      if(roundingCheckBox.Checked == true) { 
       if(downloadCheckBox.Checked == true) { 
        // download 
        if(kbCheckBox.Checked) { 
         sizeTypeLabel.Text = "Size (KB):"; 
         double kbSpeed = size/getKBDownloadSpeed(); 
         outputLabel.Text = kbSpeed.ToString(); 
        } 
        if(mbCheckBox.Checked) { 
         sizeTypeLabel.Text = "Size (MB):"; 
        } 
        if(gbCheckBox.Checked) { 
         sizeTypeLabel.Text = "Size (GB):"; 
        } 
       } 
       if(uploadCheckBox.Checked) { 
         //upload 
        if(kbCheckBox.Checked) { 
         sizeTypeLabel.Text = "Size (KB):"; 
        } 
        if(mbCheckBox.Checked) { 
         sizeTypeLabel.Text = "Size (MB):"; 
        } 
        if(gbCheckBox.Checked) { 
         sizeTypeLabel.Text = "Size (GB):"; 
        } 
       } 
      } else { 

      } 
     } 

     private void optionsButton_Click(object sender,EventArgs e) { 
      this.Width = 335; 
      this.Height = 241; 
     } 
    } 
    } 

Почему я думаю, что существует проблема с разбором? Потому что, если я добавлю числа в inputBox и нажмите кнопку «Calculate», появится MessageBox и отобразит ошибку.

+0

Вы пробовали положить точку останова на кнопку рассчитайте и отладки? – Killingsworth

+0

Какой номер вы вводили? И вы позаботились о том, чтобы использовать или. в зависимости от настроек языка/культуры? –

+0

@ Killingsworth Я предполагаю, что он означает ошибку в конце: MessageBox.Show («Пожалуйста, введите действительное число с плавающей запятой, например: 3.14», «TOMCO DT - ERROR: ... –

ответ

1

Похоже, что это вызвано нераспознанным десятичным разделителем. Я думаю, что код не запускается в рамках американской культуры.

Вы можете попробовать:

double size = 
    double.Parse(inputBox.Text, System.Globalization.CultureInfo.InvariantCulture) 
+0

Спасибо, работа! Но теперь мне нужно выяснить другую проблему ... Я нажимаю кнопку, и ничего не происходит ... Отлично. – werck

Смежные вопросы