-1

以下にコードの一部を入れますが、問題は btn2.tag です。「名前 'btn2' は現在のコンテキストに存在しません」と表示されます。どうすれば問題を解決できますか? 方法は何ですか?

    public Main()
    {
        InitializeComponent();

        // bla bla bla

        int NumOfButtons = 12;

        int loc = 20; 
        int k = 5;

        for (int i = 1; i <= NumOfButtons; i++)
        {
            Button btn = new Button();
            {
                lst.Location = new Point(4, 4);
                btn.Size = new Size(55, 55);
                btn.Tag = i;

                command.CommandText = "select product_Name from T_Product where PRODUCT_ID = " + btn.Tag;
                btn.Text = command.ExecuteScalar().ToString();  

                btn.Location = new Point(k, loc);
            }


            btn.Click += Buttons_Click;  

    }

    private void Buttons_Click(System.Object sender, System.EventArgs e)
    {
        isclicked = true;
        // Used "Sender" to know which button was clicked ?
        Button btn = sender as Button;

        Button btn2 = sender as Button;
        btn2.Tag = btn.Tag;


    }

    private void button5_Click(object sender, EventArgs e)
    {
        if (textBox1.Text != "")
        {
            SqlConnection conn = new SqlConnection(@"server=.\SQLEXPRESS;Initial Catalog=DUK1;Integrated Security=True;Pooling=False");
            command.Connection = conn;
            conn.Open();      
            command.CommandText = "select product_PRIZE from T_Product where PRODUCT_ID = " + btn2.Tag;   // here problem occurs

            textBox5.Text = comando.ExecuteScalar().ToString();
        }

}

//////

この例にはいくつかのボタン(12)があり、ボタン5をクリックすると、ボタン5をクリックすると、btn2.Tag(12ボタンのタグの1つ)に従って賞品を表示したいと思います。

どうやって作るの?

4

1 に答える 1

3

これがあなたが望むものだと思います:

object tag;
private void Buttons_Click(System.Object sender, System.EventArgs e)
{
    isclicked = true;
    // Used "Sender" to know which button was clicked ?
    Button btn = sender as Button;      
    tag = btn.Tag;
}

private void button5_Click(object sender, EventArgs e)
{
    if (textBox1.Text != "")
    {
        SqlConnection conn = new SqlConnection(@"server=.\SQLEXPRESS;
        Initial Catalog=DUK1;Integrated Security=True;Pooling=False");
        command.Connection = conn;
        conn.Open();      
        command.CommandText = "select product_PRIZE from T_Product where PRODUCT_ID = '" + tag != null ? tag : "" + "'";
        textBox5.Text = comando.ExecuteScalar().ToString();
    }
 }
于 2013-06-09T16:31:06.637 に答える