#c# #forms #textbox
#c# #формы #текстовое поле
Вопрос:
вот код, пожалуйста, помогите. Он не работает. Мне обещали, что так и будет. Я не могу преобразовать строку текстового поля в int, поэтому я не могу выполнить требуемую математику.
public Form1()
{
InitializeComponent();
}
int userVal = int.Parse(Form1.textBox1.Text);
private void button1_Click(object sender, EventArgs e)
{
int answer = (Form1.textBox1 * Form1.textBox2);
MessageBox.Show("MPG: ", answer);
}
Комментарии:
1. Вы не используете userVal
2. Попробуйте использовать int. Попробуйте проанализировать вместо int.Parse. Конечно, это не единственная проблема с этим кодом.
3. 1)
int userVal = int.Parse(Form1.textBox1.Text);
вы не можете запустить этот код вне метода или конструктора. 2) почему da hack у васtextBox1
статичный? если это не так, то удалитеForm1
! 3)Its not working.
это худшее описание проблемы, которое вы можете дать! У вас есть ошибки компиляции? ошибки во время выполнения? исключения? расскажите нам больше….
Ответ №1:
Прежде всего. Вам действительно следует начать с основ, потому что в вашем коде вы пытаетесь умножить два TextBox
элемента управления, что невозможно.
Во-вторых. Я исправил ваш код.
Int32.TryParse(someString,out anInt)
пытается преобразовать первый параметр (someString) в Int32
и возвращает логическое значение о преобразовании, было ли оно успешным или нет. Если преобразование прошло успешно, преобразованное значение сохраняется во втором параметре (anInt) и Int32.TryParse(someString,out anInt)
возвращает true
значение.
В исправленном коде вы просто пытаетесь преобразовать string
s из обоих TextBox
файлов. Если вы смогли это сделать (вернуть значение Int32.TryParse
), просто умножьте оба int
значения, полученные из Int32.TryParse
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
int num1,num2;
If(Int32.TryParse(textBox1.Text,out num1) amp;amp; Int32.TryParse(textBox2.Text,out num2))
{
int answer = num1 * num2;
string output = "MPG: " answer.ToString();
MessageBox.Show(output);
}
}
Комментарии:
1. @MongZhu спасибо за ваш отзыв. Отредактировал мой ответ еще раз, объясняя, как работает код.
Ответ №2:
int userVal = int.Parse(Form1.textBox1.Text);
Прежде всего, эта строка должна быть помещена в функцию button1_Click, чтобы она работала. Но теперь проблема в том, что вы используете строковый ввод для приема чисел, что не очень хорошая идея, потому что, если вы наберете, например, «abc», int.Parse выдаст исключение.
Теперь вам просто нужно заменить TextBox1 и 2 на числовые входные данные, а затем использовать этот код:
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
int answer = (numericalInput1.value * numbericalInput2.value);
MessageBox.Show("MPG: ", answer);
}
Комментарии:
1. Это приведет к сбою в любом случае. Что такое Form1? Это имя класса, а в C # у нас нет экземпляров автоматической формы. Вам нужен экземпляр Form1. Во-вторых, каково содержимое двух текстовых полей. Int.Parse завершится ошибкой, если содержимое не преобразуется в целые числа. Например, пустая строка
2. 1. Он просто не включил общедоступный частичный класс Form1 : Form. Также он, вероятно, использует редактор VisualStudio Form WYSIWYG, который обрабатывает экземпляр формы. 2. Я согласен, он должен использовать числовой ввод, название которого я забыл, NumericUpDownVal или что-то в этом роде.
3. @Laurent Если вы хотите получить доступ к элементу внутри класса, используйте
this
ключевое слово, но в большинстве случаев в этом нет необходимости.4. Да, я не заметил, что он это сделал @schgab. Кстати, я отредактировал свой ответ.