-3

我对 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)
    {

    }
}
4

3 回答 3

4

这是您可以用来完成此操作的示例。祝你学习愉快:)

   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;
    }
于 2013-05-31T20:21:29.287 回答
3

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

// 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
}

我希望它会帮助你.. :)

于 2013-05-29T07:26:14.860 回答
0

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

 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);
     };
 }
于 2018-10-03T07:03:10.220 回答