重复触发按钮触发事件GotFocus [英] Button trigger event GotFocus repeattly

查看:99
本文介绍了重复触发按钮触发事件GotFocus的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have created a set of button and attach Click event and GotFocus event to them.

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事件中会重复触发。

It triggers Click event correctly but with GotFocus event it trigger repeatly.

请有人帮我。

预先感谢。

推荐答案

在消息框上单击确定后,它将失去焦点并重新获得焦点。
因此,如果删除MessageBox.Show(),它只会触发一次,因此您可以测试如下代码,您将看到按钮的名称为btn_cauhoi1或btn_cauhoi2或btn_cauhoi3,直到您选择哪个按钮

When you click ok on message box it loose focus and get focus again. So if you delete MessageBox.Show() you will see its gonna trigger only one time, so you can test code like below, you will see the name of the button as btn_cauhoi1 or btn_cauhoi2 or btn_cauhoi3 up to which button you do click, it means its gonna trigger only one time.

        var button = (RadButton)sender;
        var index = (int)button.Tag;
        //MessageBox.Show(index.ToString());
        this.Text = button.Name;

这篇关于重复触发按钮触发事件GotFocus的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆