-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つの項目があります練習ユーザーはすべての質問と回答を表示します.2番目の項目では、ユーザーが回答を記入し、ボタンを押すと、彼はマークを受け取ります。テキストボックスから結果を取得できないため、マークの式はまだ実装していません。

また、checkBoxes から 3 つの回答を 1 つとしてカウントすることは可能ですか?

シンプルなはずですが、クラッシュしてしまい、その問題を解決できません。

4

2 に答える 2

1

何をしようとしているのかわかりませんが、代入演算子 (=) と等価演算子 (==) が混同されているようです。テキストボックスの内容を値と比較したい場合は、等値演算子を使用する必要があります。

if (textBox1.Text == A)

Text プロパティは文字列オブジェクトを返し、A 変数は int であるため、この行でコンパイル エラーが発生することに注意してください。したがって、Text プロパティを解析し、テストする前に 2 番目のローカル変数に割り当てる必要があります。 . Int32.Parse上記の行と同じように使用できますInt32.TryParse(textBox1.Text, out A)が、テキストが有効な数値形式でない場合に例外が発生しないように使用することをお勧めします。

于 2013-04-13T16:26:17.473 に答える
0

問題1、あなたの if (textBox1.Text=A)SHOULDは次のようなものですif(textbox1.Text==A.ToString())

古典的な割り当て/等価エラー

しかし、それでも奇妙ですが、なぜ textBox1 の値を int に解析して、解析された int の値が解析した値と等しいかを確認する必要があるのか​​ わかりません。完全に奇妙です。既にスコープ外で int A を定義しており、スコープ内で再度宣言しています。新しい値が古い値と等しいかどうかを確認しようとしている場合は、修飾するだけで済みますif(a==this.A)。または、正気のことをして、ローカルの int を別の名前で呼び出します。

しかし、全体として、このプログラムは非常に奇妙で、あなたが何について尋ねているのかよくわかりません。

于 2013-04-13T16:28:37.310 に答える