3

これまでのところ、私のプログラムの 1 つにこれがあり、1 つのボタンを押して入力した数値を分割すると、別のボタンを有効にしてそのデータを取得し、outfile に保存できるようにしたいと考えています。

private void button1_Click(object sender, EventArgs e)
{
    string number = textBox1.Text;
    int digits = int.Parse(number);
    if (digits > 9999 || digits < 0)
    {
        MessageBox.Show("That is not a valid number");
    }
    else
    {
        int thousands = digits / 1000;
        int hundreds = (digits - (thousands * 1000)) / 100;
        int tens = (digits - ((hundreds * 100) + (thousands * 1000))) / 10;
        int ones = (digits - ((tens * 10) + (hundreds * 100) + (thousands * 1000))) / 1;
        label6.Text = thousands.ToString();
        label7.Text = hundreds.ToString();
        label8.Text = tens.ToString();
        label9.Text = ones.ToString();
        button2.Enabled = true;
    }

これまでのところこれで動作しますが、button2 の場合、ボタン 1 をクリックして生成されたこれらの変数を button2 に渡したいので、クリックすると、それらの変数を使用してファイルに書き込みます。何か案は?

4

2 に答える 2

1

いくつかの方法がありますが、既に持っているものを見て、ラベルを必要な変数に再度読み込んでみませんか?

private void button2_Click(object sender, EventArgs e)
{
    int thousands = Convert.ToInt32(label6.Text);
    int hundreds = Convert.ToInt32(label7.Text);
    //...etc
}

ローカルの代わりにグローバルを設定することもできます。つまり、メソッド呼び出しの外で int を宣言します。

int thousands;
int hundreds;
int tens;
int ones;
private void button1_Click(object sender, EventArgs e)
{
    //...code
    thousands = digits / 1000;
    hundreds = (digits - (thousands * 1000)) / 100;
    tens = (digits - ((hundreds * 100) + (thousands * 1000))) / 10;
    ones = (digits - ((tens * 10) + (hundreds * 100) + (thousands * 1000))) / 1;
}
private void button2_Click(object sender, EventArgs e)
{
    Console.WriteLine(thousands); //...etc
}

大量のグローバルがある場合、物事がすぐに混乱する可能性があるため、これをあまり頻繁に実行しないでください。

于 2012-09-23T20:16:18.100 に答える
1

それがasp.net Webformsアプリケーションの場合、変数をビューステートに保存し、他のボタンクリックからそれらを取得できます

//setting
ViewState["thousands "] = thousands;

//Reading
int thousands = Convert.ToInt32(ViewState["thousands "]);

コンソール、Windows アプリ、Windows サービスの場合、イベント スコープ外で int 変数を宣言するだけで、両方のボタン クリック イベントからアクセスできます。

于 2012-09-23T20:12:11.253 に答える