按钮触发事件GotFocus重复

时间:2016-12-24 06:47:09

标签: c# .net winforms c#-4.0 telerik

我创建了一组按钮并将Click事件和GotFocus事件附加到它们。

for (int i = 0; i < NumberOfQuestion; i++)
        {
            RadButton button = new RadButton();
            // radButton1
            // 
            button.Anchor = AnchorStyles.None;
            button.Font = new Font("Segoe UI", 8.25F, FontStyle.Bold);
            button.Location = new Point(65 * i + 15, 10);
            button.Name = "btn_cauhoi" + (i + 1);
            button.Size = new Size(60, 35);
            button.TabIndex = 1 + i;
            button.Text = "Câu " + (i + 1);

            button.Tag = (i + 1);

            button.Click += Button_Click;
            button.GotFocus += Button_Click; ;

            // 

            panel_nut_cauhoi.Controls.Add(button);
        }

   private void Button_Click(object sender, EventArgs e)
    {
        var button = (RadButton)sender;
        var index = (int)button.Tag;
        MessageBox.Show(index.ToString());
    }

它会正确触发Click事件,但使用GotFocus事件会重复触发。

请有人帮助我。

感谢您的进步。

1 个答案:

答案 0 :(得分:1)

当您在消息框上单击“确定”时,它会失去焦点并再次获得焦点。 因此,如果你删除MessageBox.Show(),你会看到它只会触发一次,所以你可以测试下面的代码,你会看到按钮的名称为btn_cauhoi1或btn_cauhoi2或btn_cauhoi3,你可以点击哪个按钮,它意味着它只会触发一次。

var array = [
'hello@yahoo.com',
'www.hello.com',
'hello@gmail.com'];
var newArray = array.filter(function(item){  
    return item.indexOf('@') ==-1
})
console.log(newArray)