我如何链接多个按钮与他们相应的标签,而使用定时器?(Visual Studios 2015)

本文关键字:标签 定时器 2015 Visual Studios 链接 何链接 他们 按钮 | 更新日期: 2023-09-27 18:09:30

我从之前的问题中得到了答案,但它不完全正确。我想让button1button2做同样的事情,但事实并非如此。我也想知道我应该如何添加更多的按钮到代码(我总共需要4个按钮)。我不知道是否有一种更简单的方法来达到我想要做的同样的结果。如果有,请给我解释一下。我一直在努力使用c#(或者我认为他们称之为Windows,我不太确定),因为我对它相对来说是新的。我正在努力学习如何修复我的代码,但是,这个答案不是我熟悉的。我通常用Button btn = (Button)sender;tmr.Tick += new EventHandler(timer_Tick);。这是我得到的答案(我编辑了一点,所以可能是我错了)。

    public Form1()
    {
        InitializeComponent();
        this.SerCorrespondingButtons();
        this.SetCorrespondingInitialButtonInscriptions();
    }
    System.Windows.Forms.Timer tmr = new System.Windows.Forms.Timer();
    private Dictionary<Button, Label> correspondingControls;
    private Dictionary<Button, string> initialButtonInscriptions;
    private List<string> sayingsList;
    private Button currentButton;
    private int i;
    private void SerCorrespondingButtons()
    {
        correspondingControls = new Dictionary<Button, Label>()
                                                              {
        {this.button1, this.label1},
        {this.button2, this.label2},
                                                              };
    }
    private void SetCorrespondingInitialButtonInscriptions()
    {
        this.initialButtonInscriptions = new Dictionary<Button, string>()
                                                              {
        {this.button1, this.button1.Text},
        {this.button2, this.button2.Text}
                                                              };
    }
    private void button2_Click(object sender, EventArgs e)
    {
        var button = sender as Button;
        if (this.currentButton != null)
        {
            this.currentButton.Enabled = true;
            this.currentButton.Text = this.initialButtonInscriptions[this.currentButton];
            this.currentButton.Click += this.button2_Click;
            tmr.Enabled = false;
            tmr.Tick -= timer2_Tick;
        }
        this.currentButton = button;
        var saying = this.correspondingControls[button];
        saying.Visible = true;
        button.Text = "Click To Hide Saying";
        button.Click -= button2_Click;
        button.Click += button2_Click2;
    }
    private void button2_Click2(object sender, EventArgs e)
    {
        var button = sender as Button;
        var saying = this.correspondingControls[button];
        saying.Visible = true;
        if (saying.Visible)
        {
            button.Enabled = false;
            saying.Visible = false;
            button.Text = "Reactivating in 5 seconds";
            tmr.Interval = 1000;
            button.Click -= button2_Click2;
            button.Click += button2_Click;
            this.i = 4;
            tmr.Tick += timer2_Tick;
            tmr.Enabled = true;
        }
    }
    private void timer2_Tick(object sender, EventArgs e)
    {
        if (i != 0)
        {
            this.currentButton.Text = "Reactivating in " + i + " seconds";
            i -= 1;
        }
    }

它没有附带注释,所以,如果你能在你的回答中添加注释/评论,我将非常感激。如果你也能给我的链接,我应该查找我真的很感激!就像我说的,我试过其他方法,但是,他们都没有接近这种方式。提前谢谢你!

我如何链接多个按钮与他们相应的标签,而使用定时器?(Visual Studios 2015)

a Button_click是一个事件,在c#中,事件是用来通知对象任何修改或发生在特定对象上的事情。

按钮是一个对象,它有许多与Click相同的事件
所以如果你想让你的按钮做同样的事件,你可以只听他们所有的,并为他们所有的一个FUNCTION/OPERATION你可以参考这个链接c#如何为多个按钮使用一键事件处理程序