Рейтинг:
15
OriginalGriff
Первое, что нужно сделать, это начать с преобразования числа в текстовом поле в числовой формат, с которым вы можете работать. Для этого используйте TryParse:
double val;
if (!double.TryParse(myTextBox.Text, out val))
{
// It's not a valid floting point number - report a problem to the user instead of continuing.
...
return;
}
Теперь вы можете использовать значение в
val
чтобы сложить вашу общую сумму.
Вы "синхронизируете" его с индикатором выполнения, устанавливая свойство bars Value - устанавливая максимальные и минимальные свойства для покрытия всего диапазона, чтобы ваши значения соответствовали между ними.
Сохранение в БД сложнее - если вы еще не можете справиться с ProgressBar, то я бы оставил это на некоторое время и подумал о том, чтобы использовать что-то более простое, например файл настроек:
Использование настроек в C#[
^]
Johny2018
Я прочитал ваш ответ около 10 раз и искал, как добавить ценность в общей сложности, было несколько кодов, но ни один из них не работал. так что в конце концов это то что у меня есть но это не работает :
//int val = 0;
//итог = инт.Синтаксический анализ(текстовое поле textbox1.Текст) + инт.Синтаксический анализ(этикетке.Текст);
двойной вал;
если (!двойной.TryParse(textBox1. Text, out val))
{
val = преобразовать.ToInt32(this. textBox1. Text);
int total = val + label1. Text; // я получаю ошибку здесь он говорит, что не может неявно преобразовать тип string в int !!!!
}
OriginalGriff
Посмотрите на код, который я написал...не то, что вы думаете, что я написал. Обратите внимание на комментарии.
Если вы не понимаете код, посмотрите на документацию eth TryParse - все довольно ясно.
Если вы хотите ввести целые числа, используйте int.TryParse вместо double.Метод tryparse.
Johny2018
Итак, я понимаю, что tryparse предназначен для преобразования строки в int, но я не могу понять, почему вы использовали double ?! и еще одно, что я не могу найти способ добавить число в метку. все, что у меня есть, - это форма с lbl, btn, txtbox, и в области кода прямо сейчас это просто код, который вы мне дали (thx). если первое число в метке равно 0, как я могу добавить к нему еще одно число ?! я имею в виду, что если я добавлю 1 lbl, то он должен показать мне 1, а если я добавлю 2, то он должен показать мне 3, а если я снова добавлю 2, то он должен показать 5, но все, что моя программа делает, это показывает мне все, что находится в txtbox :(
OriginalGriff
Потому что я предполагал, что вы будете использовать часы.
Если вы используете int, то все, что вы можете заставить пользователя ввести, - это количество минут, что может быть неудобно. Есть смысл?
Что касается этикетки, подумайте об этом. Вы лично добавляете "воду" в "чайный пакетик", чтобы получить напиток? Или вы кладете чайный пакетик в чашку и добавляете туда воду?
Разница в том, что строки - это "имена", "метки", а не числа. Таким образом, вы не можете сложить две строки вместе "12" + "42" и получить строку, которая имеет сумму в: "54", потому что сложение строк вместе добавляет "имена" вместе: "12" + "42" дает вам более длинную строку "1242".
Поэтому, если вы сохраняете свой итог в метке, вам нужно разобрать метку на число, добавить новое значение к этому числу, а затем преобразовать результат обратно в строку, чтобы отобразить его в метке.
Это действительно имеет смысл: ваш домашний номер телефона состоит из двух частей: кода города, такого как" 0777", и местного кода, такого как"123456". Когда вы объединяете их, чтобы получить целый телефонный номер, вы хотите, чтобы "0777" + "123456" дали вам "0777123456", а не "124233". Но если вы хотите добавить мою месячную зарплату в 777 долларов к вашей месячной зарплате в 123456 долларов, то вам нужно число: 124233 доллара.
Тип данных, которые вы используете, влияет на то, какие результаты вы получаете, поэтому вы должны преобразовать их по мере необходимости в правильные типы данных, иначе вы не получите желаемых результатов!
Johny2018
о, большое спасибо, я понял после прочтения первых двух частей, но thx для дальнейших примеров :) но все же я не знаю, какой код я должен использовать : ((глупый я)
мой разум буквально взрывается (английский-мой второй язык, может быть, это и есть причина). Это не должно быть так сложно, у меня есть lbl, в нем ничего нет, когда вы вводите число в текстовое поле и нажимаете btn, он должен показать это число, а когда вы вводите другое число, он должен объединить эти два и просто показать его в lbl, как в Примере ur 12+42 = 54
int val;
if (int.TryParse(textBox1. Text, out val))
{
вал++;
этикетка.Текст = элемент textbox1.Текст;
}
я использовал int, но он продолжает показывать мне, что находится внутри txtbox.
все что ты сказал имеет смысл но я не могу узнать коды :(
может быть, я узнаю это завтра. в любом случае еще раз большое вам спасибо за все, что вы мне очень помогли.
OriginalGriff
textBox1. Text содержит новое значение в виде строки.
val содержит новое значение в виде числа.
этикетка.Текст содержит старое значение в виде строки.
Вам нужно сложить два числа. Так... что вы использовали для преобразования textBox1. Text в число? (*Действительно очень большой намек*)
Johny2018
инт.Метод tryparse(textbox1 элемент.Текст, из-Валь))
но код такой, и мой второй номер должен быть label.Текст и его строка, поэтому я конвертирую его в int, но он говорит, что не может неявно преобразовать тип int в string !!! я не конвертирую их они оба int я просто складываю их вместе :
int val;
int val2;
if (int.TryParse(textBox1. Text, out val))
{
int.TryParse (метка.Текст, из val2);
этикетка.Текст = val + val2;
}
вернуть;
извините, что я этого не понимаю :(( это меня раздражает больше, чем вы думаете. прошло уже около 6-7 часов, а я все еще ищу А... решение мои глаза покраснели, и я думаю, что у меня болит голова. Я не знаю, как там, но здесь уже 9: 47 вечера, и я не хочу спать, я просто хочу найти решение. еще раз спасибо Вам за то, что вы были так добры и отвечали на мои глупые простые вопросы, но я не знаю, почему я не понимаю правильный код, который я должен ввести. кстати, я использую все эти коды в private void button1_Click, это правильное место ?!
OriginalGriff
int. TryParse(theInputString, out theplacetoputtheconvertedvalueandyoudontwanttousethesamevariable forbothofthemreallydoyou);
Johny2018
ОМГ, я сделал именно то, что ты сказал Здесь :
int val;
int v2;
if (int.TryParse(textBox1. Text, out val))
{
//так ввод строки надписи.Text / / v2-это преобразованное значение
int.TryParse (метка.Text, out v2); / / v2-это еще одна переменная, верно?!
В2= вал + В2; // теперь следует добавить Валь ( инт ) В2 ( int ) и показать его в v2 ( этикетке.Текст ). так почему же он мне ничего не показывает ?!!!
}
вернуть;
}
Итак, я добавляю две разные переменные вместе, и они оба являются int, но это ничего не показывает!!!
вот это вся моя программа, пожалуйста, посмотрите и скажите мне, что я делаю не так, спасибо Вам большое :
размер : 36kb
https://1drv.ms/u/s! Auo1LzN8HsKXgzv04H6pp89VjbQr
OriginalGriff
Потому что v2 содержит результат их добавления ... но это не меняет значения метки!
Подумайте об этом. Если вы достанете свой мобильный телефон из кармана и обновите его до нового устройства, он автоматически не появится в вашем кармане. Он остается на прилавке магазина до тех пор, пока вы не поднимете его и физически не уберете туда, где ему место.
Поэтому вам нужно изменить v2 обратно на строку и поместить ее обратно в метку.
Johny2018
поблагодарить у так много. наконец с помощью УР я нашел решение. у р потрясающе. теперь все так просто :)
OriginalGriff
Пожалуйста!
Это не сложно - все, что вам нужно сделать, это подумать об этом логически.