0

ランダムな文字ジェネレーターを作成しています。form1とform2の2つのフォームがあり、form2にはチェックボックスがあります。したがって、ユーザーがチェックボックス1をオンにした場合、form1では1つの文字のみが表示され、ユーザーが5つすべてをチェックすると表示されます。チェックボックスをオンにすると、form1は5文字を生成します。form1に、ランダムな文字の生成時にイベントをトリガーするボタンがあります。

文字:'+'、'-'、'*'、'/'、'%'

私のコードはどうなりますか?WINDOWSFORMSアプリケーションを使用しています。

ここの写真:form1: http: //i49.tinypic.com/30bzos8.png form2: http: //i50.tinypic.com/k00ndt.png

        char[] select = new char[] { '+' , '-' , '*' , '/', '%' };
        var rand = new Random();
        char num = select[rand.Next(5)];
4

1 に答える 1

0

あなたがクラスで何をカバーしているかわからないので、この状況は常に興味深いものです。したがって、上記の私のコメントのように、あなたは矛盾する答えを与えたようです。私は、Form2がForm1のコンストラクターで作成されていると仮定します。チェックされるコンボボックスを決定するための何らかのメソッドが必要になります。バイナリ値をXORしただけです。コメントで述べたように、Form2をShowDialogで開始し、戻り値を調べて、終了するか続行するかを決定します。私はあなたに簡単で汚い例をあげます、それを肉付けするのはあなた次第です。そうでない場合は、もう少しコードを投稿する必要があります

Form1

public partial class Form1 : Form
{
    char[] operators;

    public Form1()
    {
        InitializeComponent();
        Form2 frm2 = new Form2();
        if (frm2.ShowDialog() == DialogResult.OK) //Check for DialogResult Here
        {
            operators = CreateArray(frm2.GetOperators); // Get ComboBox Values from Form2 and Process them
            frm2.Close();                  // Close Form2
        }
        else
            Application.Exit();           // If DialogResult is not OK then exit Form
    }

    private char[] CreateArray( int value)
    {
        string num = "";
        if ((value & 1) == 1)
            num += "+";
        if ((value & 2) == 2)
            num += "-";
        if ((value & 4) == 4)
            num += "*";
        if ((value & 8) == 8)
            num += "/";
        if ((value & 16) == 16)
            num += "%";

        return num.ToCharArray();
    }
}

Form2

public partial class Form2 : Form
{
    int operators;
    public Form2()
    {
        InitializeComponent();
    }

    private void checkBox_CheckedChanged(object sender, EventArgs e)
    {
        CheckBox cb = (CheckBox)sender;
        //Method that I used for determining CheckBox State. You can use a boolean array or an Enumeration ....
        if (cb.Text == "Addition")
            operators = operators ^ 1;
        else if (cb.Text == "Subtraction")
            operators = operators ^ 2;
        else if (cb.Text == "Multiplication")
            operators = operators ^ 4;
        else if (cb.Text == "Division")
            operators = operators ^ 8;
        else if (cb.Text == "Modulus")
            operators = operators ^ 16;

    }
    public  int GetOperators       //Property for return value to Form1
    {
        get { return operators; }
    }
}
于 2012-11-25T05:00:54.910 に答える