-2

実行時に動的に作成されたテキストボックスからデータを読み取る方法を理解するのに問題があります。エラーが発生し、コードは次のようになります。追加する必要のある小さな変更があると確信していますが、正確に何を見つけることができません。ありがとう

 private void button2_Click(object sender, EventArgs e)
    {
        //*************************************TEXTBOX***********************************************//
        TextBox tbox1 = new TextBox();
        tbox1.Name = "textBox8";
        tbox1.Location = new System.Drawing.Point(54 + (0), 55);
        tbox1.Size = new System.Drawing.Size(53, 20);
        this.Controls.Add(tbox1);
        tbox1.BackColor = System.Drawing.SystemColors.InactiveCaption;
        tbox1.TextChanged += new EventHandler(tbox1_TextChanged);

        //*************************************BUTTON***********************************************//
        Button button3 = new Button();
        button3.BackColor = System.Drawing.SystemColors.Highlight;
        button3.Location = new System.Drawing.Point(470, 55);
        button3.Name = "button3";
        button3.Size = new System.Drawing.Size(139, 23);
        button3.TabIndex = 0;
        button3.Text = "Calculate";
        this.Controls.Add(button3);
        button3.UseVisualStyleBackColor = false;
        button3.Click += new System.EventHandler(button3_Click);

    }//button2_click

    //here i want to store into variable data that I enter into textbox
    double var8;
    private void tbox1_TextChanged(object sender, EventArgs e)
    {
        TextBox tbox = sender as TextBox;
        var8 = Convert.ToDouble(tbox.Text);
    }

    //once the button3 is clicked, i want to display calculated data into textbox
    double result2;
    private void button3_Click(object sender, EventArgs e)
    {

        result2 = var8 * 2;
        //get an error saying tbox does not exist in current context(what needs to be changed?)
        tbox.Text = result2.ToString();
    }
4

2 に答える 2

2

あなたのprivate void button3_Click(object sender, EventArgs e)中にはtboxvarの定義はありません!グローバル変数を定義して動的に作成されたテキストボックスをそれに割り当てるか、Controlsコレクションを反復処理して対応するテキストボックスを見つけるかを選択できます。

したがって、最初に考えられる解決策は

TextBox tbox = null;
private void tbox1_TextChanged(object sender, EventArgs e)
{
    tbox = sender as TextBox;
    var8 = Convert.ToDouble(tbox.Text);
}
private void button3_Click(object sender, EventArgs e)
{
    result2 = var8 * 2;
    if (tbox!=null)
        tbox.Text = result2.ToString();
}
于 2012-08-22T15:52:32.097 に答える
0
private void button3_Click(object sender, EventArgs e)
    {

        result2 = var8 * 2;
        //get an error saying tbox does not exist in current context(what needs to be changed?)
        TextBox tbox = this.Controls.Find("textboxid") as TextBox;
        //tbox.Text = result2.ToString(); tbox is out of context

    }
于 2012-08-22T15:58:31.750 に答える