c# -使用代码添加按钮点击事件

本文关键字:按钮 事件 添加 代码 | 更新日期: 2023-09-27 18:15:44

我几乎没有c#和编程的经验,所以你可能会觉得我的问题很愚蠢。然而,我试着用代码创建一个Windows窗体,我已经成功地实现了我想要的。但现在我想添加按钮点击事件到我所有的按钮。我想addToDay[I]清除文本在exerciseBox[I], setBox[I]和repBox[I]。谢谢。

    public NewSchedule2(string path)
    {
        InitializeComponent();
        this.SuspendLayout();
        labels = new System.Windows.Forms.Label[7];
        exercises = new System.Windows.Forms.TextBox[7];
        sets = new System.Windows.Forms.TextBox[7];
        reps = new System.Windows.Forms.TextBox[7];
        addToDay = new System.Windows.Forms.Button[7];
        string[] lines = File.ReadAllLines(path);
        for (int i = 0; i < 7; i++)
        {
            this.labels[i] = new System.Windows.Forms.Label();
            this.labels[i].Location = new System.Drawing.Point(40, 40 + i * 50);
            this.labels[i].Name = "Label" + i;
            this.labels[i].Size = new System.Drawing.Size(110, 20);
            this.labels[i].Text = lines[i];
            this.Controls.Add(this.labels[i]);
            if (lines[i] == "Restday")
            {
            }
            else
            {
                this.exercises[i] = new System.Windows.Forms.TextBox();
                this.exercises[i].Location = new System.Drawing.Point(160, 40 + i * 50);
                this.exercises[i].Name = "excersiceBox" + i;
                this.exercises[i].Size = new System.Drawing.Size(110, 20);
                this.exercises[i].Text = "";
                this.Controls.Add(this.exercises[i]);
                this.sets[i] = new System.Windows.Forms.TextBox();
                this.sets[i].Location = new System.Drawing.Point(290, 40 + i * 50);
                this.sets[i].Name = "setBox" + i;
                this.sets[i].Size = new System.Drawing.Size(40, 20);
                this.sets[i].Text = "";
                this.Controls.Add(this.sets[i]);
                this.reps[i] = new System.Windows.Forms.TextBox();
                this.reps[i].Location = new System.Drawing.Point(350, 40 + i * 50);
                this.reps[i].Name = "repBox" + i;
                this.reps[i].Size = new System.Drawing.Size(40, 20);
                this.reps[i].Text = "";
                this.Controls.Add(this.reps[i]);
                this.addToDay[i] = new System.Windows.Forms.Button();
                this.addToDay[i].Location = new System.Drawing.Point(430, 40 + i * 50);
                this.addToDay[i].Name = "addToDay" + i;
                this.addToDay[i].Click += new System.EventHandler(this.button_Clicked);
                this.addToDay[i].Size = new System.Drawing.Size(80, 20);
                this.addToDay[i].Text = "Add To " + lines[i];
                this.Controls.Add(this.addToDay[i]);
            }
        }
    }
    private void button_Clicked(object sender, EventArgs e)
    {
    }
}

c# -使用代码添加按钮点击事件

这是为按钮添加点击事件的方法:

// btnTest is object of button. This is how you add event for button
btnTest.Click += new System.EventHandler(this.btnButton_Click);
// its event handler
void btnButton_Click(object sender, EventArgs e)
{
 // your code goes here
}

我希望它能帮助你…:)

下面是一个示例,您可以使用它来完成此操作。祝你学习愉快:)

   public NewSchedule2(string path)
    {
        InitializeComponent();
        this.SuspendLayout();
        labels = new System.Windows.Forms.Label[7];
        exercises = new System.Windows.Forms.TextBox[7];
        sets = new System.Windows.Forms.TextBox[7];
        reps = new System.Windows.Forms.TextBox[7];
        addToDay = new System.Windows.Forms.Button[7];
        string[] lines = File.ReadAllLines(path);
        for (int i = 0; i < 7; i++)
        {
            this.labels[i] = new System.Windows.Forms.Label();
            this.labels[i].Location = new System.Drawing.Point(40, 40 + i * 50);
            this.labels[i].Name = "Label" + i;
            this.labels[i].Size = new System.Drawing.Size(110, 20);
            this.labels[i].Text = lines[i];
            this.Controls.Add(this.labels[i]);
            if (lines[i] == "Restday")
            {
            }
            else
            {
                this.exercises[i] = new System.Windows.Forms.TextBox();
                this.exercises[i].Location = new System.Drawing.Point(160, 40 + i * 50);
                this.exercises[i].Name = "excersiceBox" + i;
                this.exercises[i].Size = new System.Drawing.Size(110, 20);
                this.exercises[i].Text = "";
                this.Controls.Add(this.exercises[i]);
                this.sets[i] = new System.Windows.Forms.TextBox();
                this.sets[i].Location = new System.Drawing.Point(290, 40 + i * 50);
                this.sets[i].Name = "setBox" + i;
                this.sets[i].Size = new System.Drawing.Size(40, 20);
                this.sets[i].Text = "";
                this.Controls.Add(this.sets[i]);
                this.reps[i] = new System.Windows.Forms.TextBox();
                this.reps[i].Location = new System.Drawing.Point(350, 40 + i * 50);
                this.reps[i].Name = "repBox" + i;
                this.reps[i].Size = new System.Drawing.Size(40, 20);
                this.reps[i].Text = "";
                this.Controls.Add(this.reps[i]);
                this.addToDay[i] = new System.Windows.Forms.Button();
                this.addToDay[i].Location = new System.Drawing.Point(430, 40 + i * 50);
                this.addToDay[i].Name = "addToDay" + i;
                this.addToDay[i].Click += new System.EventHandler(this.button_Clicked);
                this.addToDay[i].Size = new System.Drawing.Size(80, 20);
                this.addToDay[i].Text = "Add To " + lines[i];
                this.addToDay[i].Click += new System.EventHandler(this.button_Clicked);
                this.Controls.Add(this.addToDay[i]);
            }
        }
    }
   private void button_Clicked(object sender, EventArgs e)
    {
        Button triggeredButton = (Button) sender;
        var numAlpha = new Regex("(?<Alpha>[a-zA-Z]*[ _]?)(?<Numeric>[0-9]*)");
        var match = numAlpha.Match(triggeredButton.Name);
        var num = match.Groups["Numeric"].Value;
        this.exercises[num].Text = string.Empty;
        this.sets[num].Text = string.Empty;
        this.reps[num].Text = string.Empty;
    }

这是为每个按钮设置自定义事件的简单方法:

 for (int i = 0; i < 7; i++){
     .
     .
     .
     string text = "some things...";
     this.addToDay[i] = new System.Windows.Forms.Button();
     this.addToDay[i].Click += (object sender, EventArgs e)=>
     {
        //you can use your variables inside event
        MessageBox.ShowDialog(text + i);
     };
 }