Рейтинг:
4
kanangandhi
private void textBox1_KeyUp(object sender, KeyEventArgs e)
{
double Total;
string[] numbers = textBox1.Text.Split('+');
Total = 0;
foreach (string value in numbers)
{
if (!string.IsNullOrEmpty(value))
{
Total = Total + Convert.ToDouble(value);
}
}
textBox2.Text = Total.ToString();
}
Richard MacCutchan
Total = Total + Convert.ToDouble(value);
Что произойдет, если пользователь наберет "3 + a" ?
Member 14023534
Для этого у меня есть метод.
Richard MacCutchan
Я не вижу этого в приведенном выше коде.
Рейтинг:
1
Vincent Maverick Durano
Попробуйте что-нибудь вроде этого:
using System;
public class Program
{
public static void Main()
{
Console.WriteLine(Compute());
}
private static string Compute(){
string message = string.Empty;
bool isValid = true;
double result = 0;
string sampleText = "2+5+1+6+3+2+1";
string delimtedValue = "+";
if(sampleText.Contains(delimtedValue)){
string[] numbers = sampleText.Split(delimtedValue.ToCharArray());
double val;
foreach(string num in numbers)
{
if (!double.TryParse(num, out val))
{
message ="Unable to compute. String has invalid numeric values";
isValid = false;
break;
}
result = result + val;
}
}
if(!isValid)
return message;
else
return string.Format("The total sum is: {0}", result);
}
}
Member 14023534
Как мне изменить свою форму на основную?
Я только получаю ошибки.
Vincent Maverick Durano
Основной метод предназначен для консольного типа приложения. Что вы можете сделать, так это просто вызвать метод Compute() в Вашем событии keydown TextBox.
Рейтинг:
1
OriginalGriff
Вам нужно преобразовать строки в числа внутри вашего цикла, используя двойной.Метод tryparse[^]
double val;
if (!double.TryParse(value, out val))
{
... report problem to user ...
return;
}
Затем вы можете добавить их в общую сумму.
Member 14023534
Вот мой код, пожалуйста, покажите мне, Я новичок в этом и чувствую себя потерянным:
public partial class cardCalc : Form
{
public static string calcTextcopy;
public cardCalc()
{
InitializeComponent();
}
public static string sendtext = "";
private void calctxt_KeyDown(object sender, KeyEventArgs e)
{
double Total;
string[] numbers = calctxt.Text.Split('+');
Total = 0;
foreach(string num in numbers)
{
Total = Total + numbers(num)
}
if (e.KeyCode == Keys.Enter)
{
if (calctxt.Text != "")
{
sendtext = calctxt.Text;
CashUpForm frm = new CashUpForm();
frm.Show();
Application.Exit();
}
else
{
Application.Exit();
}
}
}
}
}
Member 14023534
это дает мне ошибку в разделе "значение", но мой код просто выглядит неправильно:
private void calctxt_KeyDown(object sender, KeyEventArgs e)
{
double value;
string[] numbers = calctxt.Text.Split('+');
double num;
double val;
value = 0;
if (!double.TryParse(value, out val))
{
return;
}
Atlapure Ambrish
где твоя петля??
Кроме того, вы присваиваете 0 значению, вместо этого оно должно быть присвоено элементу numbers в цикле, а затем проанализировано.
OriginalGriff
Когда я сказал "внутри вашей петли", почему вы предположили, что это означает "выбросьте петлю, она вам не нужна"?
Member 14023534
Это три функции свойств моего текстового поля:
private void cardsTotalbox_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Add)
{
if (cardsTotalbox.Text != "")
{
this.cardsTotalbox.Font = new Font("Microsoft Sans Serif", 12F);
}
}
else if(e.KeyCode == Keys.Enter)
{
this.cardsTotalbox.Font = new Font("Microsoft Sans Serif", 9F);
twoHundredrBox.Focus();
}
}
public void onlynumwithsinglepoint(object sender, KeyPressEventArgs e)
{
if (!(char.IsDigit(e.KeyChar) || e.KeyChar == (char)Keys.Back || e.KeyChar == '.' || e.KeyChar == '+'))
{ e.Handled = true; }
TextBox txtDecimal = sender as TextBox;
}
private void cardsTotalbox_KeyUp(object sender, KeyEventArgs e)
{
double Total;
string[] numbers = cardsTotalbox.Text.Split('+');
Total = 0;
foreach (string value in numbers)
{
if (!string.IsNullOrEmpty(value))
{
Total = Total + Convert.ToDouble(value);
}
}
cardsTotalbox.Text = Total.ToString();
}
Проблема, с которой я сейчас сталкиваюсь, заключается в том, что если я нажимаю enter, чтобы активировать текстовое поле, оно сразу же имеет ноль, а затем, когда я добавляю значение и + другое значение, ноль изменяется на сумму двух значений, но я хотел бы, чтобы вся строка отображалась в текстовом поле со всеми знаками+, прежде чем он вычислит значение, а не каждый раз, когда я нажимаю знак+.
OriginalGriff
Так ты ничего не читал из того, что я сказал?
Есть ли смысл задавать вопросы, если вы игнорируете то, что вам говорят?