2013-04-13 3 views
-2

У меня проблема с разбором текста из текстового поля в C#. В основном я пытаюсь установить некоторое значение в целое число, а после этого, когда человек вводит число в текстовое поле, если это то же самое, что и для увеличения счетчика. Но я должен разобрать int на строку, и здесь я терплю неудачу.textBox разбор в C#

Вот код:

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
namespace kontrolno { 
    public partial class Form1: Form { 
    int counter; 
    int A = 13; 
    int B = 2116; 
    public Form1() { 
     InitializeComponent(); 
    } 
    private void button1_Click(object sender, EventArgs e) { 
     label3.Text = counter.ToString(); 
    } 
    private void label3_Click(object sender, EventArgs e) {} 
    private void groupBox1_Enter(object sender, EventArgs e) {} 
    private void textBox1_TextChanged(object sender, EventArgs e) { 
     int A = Int32.Parse(textBox1.Text); 
     if (textBox1.Text = A) /*As you see somewhere here i have a problem*/ 
    } 
    private void textBox2_TextChanged(object sender, EventArgs e) { 
     /*Here must be parsed second textBox*/ 
    } 
    private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { 
     switch (comboBox1.SelectedIndex) //comboBox 1st case 
     { 
     case 0: 
     button1.Enabled = false; 
     textBox1.Text = "13"; 
     textBox2.Text = "2116"; 
     radioButton1.Checked = true; 
     checkBox1.Checked = true; 
     /*Those 3 answers should 
     checkBox2.Checked = true; be counted as one 
     checkBox4.Checked = true; when mark is formed*/ 
     checkBox5.Checked = true; 
     break; 
     case 1: 
     /*comboBox 2nd case*/ 
     button1.Enabled = true; 
     textBox1.Text = ""; 
     textBox2.Text = ""; 
     radioButton1.Checked = false; 
     checkBox1.Checked = false; 
     checkBox2.Checked = false; 
     checkBox4.Checked = false; 
     checkBox5.Checked = false; 
     break; 
     } 
    } 
    private void radioButton1_CheckedChanged(object sender, EventArgs e) { 
     if (radioButton1.Checked) { 
     counter++; 
     } 
    } 
    private void checkBox1_CheckedChanged(object sender, EventArgs e) { 
     if (checkBox1.Checked) { 
     counter++; 
     } 
    } 
    private void checkBox2_CheckedChanged(object sender, EventArgs e) { 
     if (checkBox2.Checked) { 
     counter++; 
     } 
    } 
    private void checkBox4_CheckedChanged(object sender, EventArgs e) { 
     if (checkBox4.Checked) { 
     counter++; 
     } else { 
     counter--; 
     } 
    } 
    private void checkBox5_CheckedChanged(object sender, EventArgs e) { 
     if (checkBox5.Checked) { 
     counter++; 
     } else { 
     counter--; 
     } 
    } 
    } 
} 

Так у меня есть проблемы, но я не знаю, как исправить it.The идею, что код должен быть test.The COMBOBOX есть 2 пунктов в 1-й практике пункт пользователь видит все вопросы и ответы. Во втором вопросе пользователь заполняет ответы, а когда нажимает кнопку, он получает свой знак. Я еще не реализовал формулу для метки, потому что не могу получить результат от textBox.

Также я хочу спросить, можно ли получить 3 ответа от checkBoxes, чтобы считаться одним?

Это должно быть просто, но я просто разбился и не могу решить эту проблему.

+0

Путь слишком много кода. Правило: если есть полосы прокрутки, это слишком много. –

+0

Я читал это пару раз, и я до сих пор не знаю, что вы пытаетесь сделать или ваша проблема. Может быть, вы можете попробовать переписать это. – Bit

ответ

1

Я не уверен, что вы пытаетесь сделать, но у вас, похоже, есть оператор присваивания (=) и оператор равенства (==). Если вы хотите сравнить содержимое текстового поля со значением, вы должны использовать оператор равенства:

if (textBox1.Text == A) 

Заметьте, что вы должны получить ошибку компиляции на этой линии, так как свойство Text возвращает строковый объект, и переменная A является int, поэтому вам нужно проанализировать свойство Text и, возможно, назначить его второй локальной переменной перед тестированием. Вы можете использовать Int32.Parse, как вы это делали в приведенной выше строке, но я бы рекомендовал использовать Int32.TryParse(textBox1.Text, out A), чтобы исключение не возникало, когда текст не в допустимом числовом формате.

0

проблема 1, ваш if (textBox1.Text=A) ДОЛЖНО быть что-то вроде if(textbox1.Text==A.ToString())

классической ошибки присваивания/равенства

но даже это странно, я понятия не имею, почему вы хотите Wanna разобрать значение textBox1 для int, а затем посмотреть, соответствует ли значение разобранного int тому, что вы только что разобрали? совершенно странно. Вы уже определили int A за пределами области действия и объявили ее снова внутри области. Если вы пытаетесь определить, соответствует ли новое значение старому значению, вы можете просто квалифицировать if(a==this.A). Или делайте здравомыслящие вещи и называйте свой локальный int чем-то другим.

Но в целом программа очень странная, и я даже не совсем уверен, о чем вы спрашиваете.