如何为 this.label 编写代码.单击以触发两个事件



这是我的代码

private void ScoreOnes_Click(object sender, EventArgs e)
    {
        this.ScoreOnes.Click += this.Roll_Click;
        this.ScoreOnes.Click -= null;
    }

ScoreOnes是一个标签,Roll是一个标签。我想触发Roll_Click,并使 ScoreOnes 不可点击,两者都是同时点击 ScoreOnes 的。如果我按照编写代码的方式操作,则必须单击两次才能使 ScoreOnes 不可单击。如果我这样做:

private void ScoreOnes_Click(object sender, EventArgs e)
    {
        this.ScoreOnes.Click -= null;
        this.ScoreOnes.Click += this.Roll_Click;
    }

得分永远不会变得不可点击.....请告知

您的代码不会触发Roll_Click。它挂接事件侦听器,以便下次单击ScoreOnes,将调用Roll_Click

至于不可点击,你的意思是禁用吗?还是它什么都不做?

如果你希望它在点击时什么都不做,你可以写这样的东西:

bool scoreOnesDisabled;
private void ScoreOnes_Click(object sender, EventArgs e)
{
    if (scoreOnesDisabled)
        return;
    this.Roll_Click(sender, e);
    scoreOnesDisabled = true;
}
 private void ScoreOnes_Click(object sender, EventArgs e)
{
    Roll_Click(); //this fires the Roll_Click method
    this.ScoreOnes.Enabled = False; // this makes ScoreOnes unclickable
}

窗体加载中连接Roll_Click事件处理程序

void frmQmsQuote_Edit_FormClosed(object sender, FormClosedEventArgs e)
{
    this.ScoreOnes.Click += this.Roll_Click;
}

ScoreOnes_Click事件处理程序分离自身,使其不会再次触发

private void ScoreOnes_Click(object sender, EventArgs e)
{
    this.ScoreOnes.Click -= ScoreOnes_Click;
}

或者使用Jim VanPetten在另一个答案中建议的禁用方法。

相关内容

  • 没有找到相关文章

最新更新