如何指定按钮单击事件处理程序之间的交互?

时间:2016-10-26 19:31:32

标签: c# winforms events button eventhandler

在程序中,通过单击button2,创建一个表和实现的数据插入。还创建了文本框和登录按钮,用于从此文本框中读取数据。按下登录按钮后,应执行下一步操作:

  • MessageBox应显示一些文字;
  • login.Text应该更改;
  • 应删除
  • 表,它是通过单击button2创建的。

我实际上并不知道如何从login.click事件处理程序访问button2中的表。我想应该通过使用EventArgs以某种方式完成,但我不明白如何。另外我考虑在button2处理程序范围外创建一些变量,稍后再使用它,但我认为这是一个不好的做法。 请告诉我如何解决这个问题,或者可能是错误的决定以这种方式创建Windows窗体组件?如果是这样,那么如何?)这是我的代码:

    private void button2_Click(object sender, EventArgs e)
    {
        label1.Hide();
        label2.Hide();
        textBox1.Hide();
        textBox2.Hide();
        button2.Hide();

        int user_count = Int32.Parse(textBox2.Text);
        int file_count = Int32.Parse(textBox1.Text);
        DataGridView T = new DataGridView();
        T.Dock = DockStyle.Top;
        T.AutoResizeColumns();
        T.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells;
        T.ColumnCount = file_count + 1;
        T.RowCount = user_count + 1;

        Controls.Add(T);

        Controller_cs c = new Controller_cs(user_count, file_count);


        for(int i = 1; i < T.RowCount; i++)
        {
           T.Rows[i].Cells[0].Value = c.user_name_insertion(i-1);
        }

        for (int i = 1; i < T.ColumnCount; i++)
        {
            T.Rows[0].Cells[i].Value = c.file_name_insertion(i - 1);
        }

        for(int i = 1; i < T.RowCount;i++)
        {
            for(int j = 1; j < T.ColumnCount;j++)
            {
                T.Rows[i].Cells[j].Value = c.rigts_insertion(j-1,i-1); 
            }
        }

        Label l = new Label();
        l.Text = "Name";
        l.Left = 20;
        l.Top = 180;
        Controls.Add(l);

        TextBox username = new TextBox();
        username.Left = 20;
        username.Top = 210;
        Controls.Add(username);

        Button login = new Button();
        login.Text = "Enter";
        login.Left = 130;
        login.Top = 175;

        login.Click += login_handler;
        Controls.Add(login);
    }

    private void login_handler(object sender, EventArgs e)
    {
        Button b = (Button)sender;
        if (b.Text == "Enter")
        {
            b.Text = "Exit";
            MessageBox.Show("Enter is done");
        }
        else
        {
            b.Text = "Enter";
            MessageBox.Show("Quit is done");
        }
    }

0 个答案:

没有答案