这是我的代码
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在另一个答案中建议的禁用方法。