none
GroupBox 加入 RadioButton ,事件觸發 非預期結果 RRS feed

  • 問題

  • 我在 winform 内加入groupbox,groupbox 内加入三個RadioButton (RB1,RB2,RB3),

    當我點選了RB1 觸發後,第一次顯示 MessageBox.show("0") 正常~

    第二次點選 RB2 觸發後,卻出现 MessageBox.Show("0") 及 MessageBox.show("1")

    第三次點選 RB3 觸發後,卻出现 MessageBox.Show("1") 及 MessageBox.show("default")

    麻烦各位前辈了。

    int k = 0;
                for (int i = groupBox3.Controls.Count-1; i > -1 ; --i)
                {
                    RadioButton RB = new RadioButton();
                    RB = groupBox3.Controls[i] as RadioButton;
                    RB.Tag = k;
                    ++k;
                    RB.Checked = false;
                    RB.CheckedChanged+= new EventHandler(RB_CheckedChanged);
                }

                                                                                   

     private void RB_CheckedChanged(object sender, EventArgs e)
            {
                RadioButton rb = sender as RadioButton;

                switch (rb.Tag.ToString())
                {
                    case "0":
                        MessageBox.Show("0");

                        break;
                    case "1":
                        MessageBox.Show("1");

                        break;
                    default:
                        MessageBox.Show("default");
                        break;

                }

            }

    2013年2月4日 下午 03:05

解答

  • 因為你第一次, 其它東西沒改變, 只有 RB1 從 unchecked 變成 checked

    而第二次, 則是 RB1 從 checked 變成 unchecked, RB2 則從 unchecked 變成 checked

    不論從 checked --> unchecked 或是 unchecked --> checked 都是 CheckedChange

    所以這結果是正確的


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    • 已標示為解答 weipxf 2013年2月5日 上午 02:13
    2013年2月4日 下午 03:34
    版主
  • 非預期?

    第二次點 RB2 , RB1.Checked由true 變false -> 觸發 checkedchanged事件 (跳出訊息"0")  + RB2 .Checked 由 false 變true  -> 觸發 checkedchanged事件(跳出訊息"1")

    第三次點 RB3 , RB2.Checked由true 變false -> 觸發 checkedchanged事件 (跳出訊息"1")  + RB3.Checked 由 false 變true  -> 觸發 checkedchanged事件(跳出訊息"default")

    這樣再正常不過了


    以下為簽名檔,如果你愛拉椅子坐那就是你的問題。
    先查MSDN文件庫
    再用GOOGLE搜尋
    才到論壇來發問

    這是論壇不是技術支援中心
    沒有人得無償解答你的問題

    在標題或文章註明很急
    不會增加網友回覆速度

    • 已標示為解答 weipxf 2013年2月5日 上午 02:13
    2013年2月4日 下午 03:36

所有回覆

  • 因為你第一次, 其它東西沒改變, 只有 RB1 從 unchecked 變成 checked

    而第二次, 則是 RB1 從 checked 變成 unchecked, RB2 則從 unchecked 變成 checked

    不論從 checked --> unchecked 或是 unchecked --> checked 都是 CheckedChange

    所以這結果是正確的


    在現實生活中,你和誰在一起的確很重要,甚至能改變你的成長軌跡,決定你的人生成敗。 和什麼樣的人在一起,就會有什麼樣的人生。 和勤奮的人在一起,你不會懶惰; 和積極的人在一起,你不會消沈; 與智者同行,你會不同凡響; 與高人為伍,你能登上巔峰。

    • 已標示為解答 weipxf 2013年2月5日 上午 02:13
    2013年2月4日 下午 03:34
    版主
  • 非預期?

    第二次點 RB2 , RB1.Checked由true 變false -> 觸發 checkedchanged事件 (跳出訊息"0")  + RB2 .Checked 由 false 變true  -> 觸發 checkedchanged事件(跳出訊息"1")

    第三次點 RB3 , RB2.Checked由true 變false -> 觸發 checkedchanged事件 (跳出訊息"1")  + RB3.Checked 由 false 變true  -> 觸發 checkedchanged事件(跳出訊息"default")

    這樣再正常不過了


    以下為簽名檔,如果你愛拉椅子坐那就是你的問題。
    先查MSDN文件庫
    再用GOOGLE搜尋
    才到論壇來發問

    這是論壇不是技術支援中心
    沒有人得無償解答你的問題

    在標題或文章註明很急
    不會增加網友回覆速度

    • 已標示為解答 weipxf 2013年2月5日 上午 02:13
    2013年2月4日 下午 03:36
  • 嗯,我用錯了!!

    改為 Click..後正常...

    感謝 ... Bill Chung 及 Alex_Lee

    2013年2月5日 上午 02:13