Входная строка имеет неверный формат - C# (248637)

Узнай цену своей работы

Формулировка задачи:

Здравствуйте, у меня не получается справится с проблемой неверного формата переменной. У меня есть 2 формы. Из второстепенной формы надо считать переменную с numEdit-(а) и передать ее в главную в формате float. Передача происходит путем создания отдельного класса Data_H во второй форме:
 
static class Data_H
    {
        public static float Value { get; set; }
    }
По нажатию на кнопку значение из numEdit-(а) конвертируется в Single и записывается во временную переменную Value.
private void button1_Click(object sender, EventArgs e)
        {
            //Прячет текущую форму
            this.Hide();
 
            //Передаем переменную в главную форму 
 
            Data_H.Value = Convert.ToSingle(numEditor1.Text);        
        }
В главной форме я использую эту переменную для дальнейших действий.
 float h = Data_H.Value;
Когда я провожу эмуляцию программы и ввожу в numEdit целочисленную переменную, все обрабатывается без ошибок. Но когда я ввожу дробное число (с точкой) мне выдает следующее исключение: ************** Текст исключения ************** System.FormatException: Входная строка имела неверный формат. в System.Number.ParseSingle(String value, NumberStyles options, NumberFormatInfo numfmt) в System.Convert.ToSingle(String value) в TpsViewFLEX.PartScreen.button1_Click(Object sender, EventArgs e) в System.Windows.Forms.Control.OnClick(EventArgs e) в System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks) в System.Windows.Forms.Control.WndProc(Message& m) в System.Windows.Forms.ScrollableControl.WndProc(Message& m) в System.Windows.Forms.ContainerControl.WndProc(Message& m) в System.Windows.Forms.UserControl.WndProc(Message& m) в System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) в System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) в System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam) Я так понимаю программа не может перевести строку с точкой в single. Так ли это? Что можно сделать в таком случае? Спасибо.
Пробовал сделать через Parse таким образом и тоже не помогло:
 Data_H.Value = float.Parse(numEditor1.Text);
************** Текст исключения ************** System.FormatException: Входная строка имела неверный формат. в System.Number.ParseSingle(String value, NumberStyles options, NumberFormatInfo numfmt) в System.Single.Parse(String s) в TpsViewFLEX.PartScreen.button1_Click(Object sender, EventArgs e)
Data_H.Value = float.TryParse(numEditor1.Text);
С TryParse почему то вообще не работает, выдавая следующее: Error 1 'float' does not contain a definition for 'TryParse'

Решение задачи: «Входная строка имеет неверный формат»

textual
Листинг программы
using System;
using System.Globalization;
 
namespace ConsoleAppEgrozavr
{
    class Program
    {
        static void Main(string[] args)
        {
            string str = "1,25";
            float f = ToSingle(str);
        }
 
        static float ToSingle(string value)
        {
            float f;
 
            // Текущая локаль, какая-нибудь.
            if (Single.TryParse(value, out f))
            {
                return f;
            }
 
            // Русская локаль, с запятой в качестве разделителя.
            if (Single.TryParse(value, System.Globalization.NumberStyles.Float, CultureInfo.GetCultureInfo("ru-RU"), out f))
            {
                return f;
            }
 
            // Нейтральная локаль, с точкой в качестве разделителя.
            if (Single.TryParse(value, System.Globalization.NumberStyles.Float, CultureInfo.InvariantCulture, out f))
            {
                return f;
            }
 
            throw new FormatException();
        }
    }
}

Оцени полезность:

7   голосов , оценка 3.714 из 5
Похожие ответы