-2

我在从 C# 中的 textBox 解析时遇到问题。基本上我试图将一些值设置为整数,然后当人在文本框中键入数字时,如果增加计数器相同。但我必须将 int 解析为字符串,但我失败了。

这是代码:

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--;
      }
    }
  }
}

所以我有问题,但我不知道如何解决。该代码的想法是进行测试。组合框在第一个项目中有 2 个项目练习用户查看所有问题和答案。在第二个项目用户填写答案和当按下按钮时,他会收到他的标记。我还没有实现标记公式,因为无法从文本框获得结果。

另外我想问一下是否有可能从复选框中获得 3 个答案以计为一个?

它应该很简单,但我只是崩溃了,无法解决这个问题。

4

2 回答 2

1

我不确定您要做什么,但您似乎混淆了赋值运算符 (=) 和相等运算符 (==)。如果要将文本框的内容与值进行比较,则应使用相等运算符:

if (textBox1.Text == A)

请注意,您应该在这一行上得到一个编译错误,因为 Text 属性返回一个字符串对象,而 A 变量是一个 int,因此您需要解析 Text 属性,并可能在测试之前将其分配给第二个局部变量. 您可以Int32.Parse像在上面的行中那样使用,但我建议您使用Int32.TryParse(textBox1.Text, out A),这样当文本不是有效的数字格式时不会引发异常。

于 2013-04-13T16:26:17.473 回答
0

问题1,你 if (textBox1.Text=A)应该是这样的if(textbox1.Text==A.ToString())

经典赋值/相等错误

但即使这很奇怪,我也不知道您为什么要将 textBox1 的值解析为 int,然后查看解析的 int 的值是否等于您刚刚解析的值?完全奇怪。您已经在范围之外定义了 int A,并在范围内再次声明了它。如果您试图判断新值是否等于旧值,则可以使用if(a==this.A). 或者做理智的事情,然后给你当地的 int 打电话。

但总的来说,这个程序很奇怪,我什至不太确定你在问什么。

于 2013-04-13T16:28:37.310 回答