Johny2018 Ответов: 2

Как мне непрерывно добавлять числа и получать общее число в C#


Здравствуйте, я хочу создать ежедневную программу на c# ( в visual studio 2017 ), она должна быть такой :
есть текстовое поле-метка - 'BTN', а внизу - название чего-то вроде Photoshop, и поэтому метка сначала показывает 0 ( часы), а затем, когда вы добавляете число в текстовое поле, например "2:30" минут и нажимаете "BTN", метка должна показывать 2:30 (часы). и еще одно: я хочу, чтобы он синхронизировался с вертикальным индикатором выполнения ( я знаю, как это сделать), но я не знаю, как синхронизировать его с индикатором выполнения, и я хочу, чтобы он сохранял все в базе данных SQL каждый раз, когда я добавляю число. Я знаю, что это очень много ( может быть, для меня, потому что я новичок), но, пожалуйста, если вы знаете, как это сделать, помогите мне. спасибо.

Что я уже пробовал:

Я провел много исследований в google и YouTube, и вот что я получил ( сначала я сделал калькулятор, но это было не то, что я хотел):

public Form1()
        {
            InitializeComponent();
        }

        int a = 0;

        private void button1_Click(object sender, EventArgs e)
        {
            a++;
            label1.Text = a.ToString();
        }


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

BillWoodruff

Я не хочу вас обескураживать, но я думаю, что вам нужно сначала потратить больше времени на изучение основ C# и решение более простых задач ... чтобы вы построили хороший фундамент для будущего.

Нужна хорошая книга: спросите меня.

Johny2018

да, я должен тратить больше времени на fundementals, но вы знаете, потому что я только начинаю, у меня есть много хороших идей ( но я не могу сделать ни одной из них ). Мне просто нужно было это его критическое значение для меня, чтобы создать эту программу после этого я собираюсь освоить fundementals :)

BillWoodruff

Это твой выбор.

2 Ответов

Рейтинг:
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

Пожалуйста!
Это не сложно - все, что вам нужно сделать, это подумать об этом логически.

Рейтинг:
1

RickZeeland

См. примеры здесь: [прогрессбар] и здесь: [SQL клиент]


Johny2018

спасибо.