none
单选框的问题 RRS feed

  • 问题

  •             Control[] cl = gb.Controls.Find(rb_name, false);
                if (cl.Length > 0)
                {
                    RadioButton temprb = (RadioButton) cl[0];
                    //temprb.Checked = true;
                }

    以上的代码是寻找 动态创建的 RadioButton 控件, 为什么无法执行以下这句:
    temprb.Checked = true;
    2010年2月17日 4:17

答案

全部回复

  • 你好!
    请问具体的错误信息是什么呢?
    周雪峰
    2010年2月18日 0:24
    版主
  • 谢谢您!
    具体的程序设计如下:
    由数组动态创建 RadioButton ,并要选中其中指定的 RadioButton。在循环中 ,要直接执行某个单选框的选中 (Checked = true;)可是一直在循环中,始终过不了循环。
    后来改为先创建 RadioButton 完毕后。再来查找并选中。同样也无法执行 Checked = true; 虽然并不死循环,但执行到此处,程序卡住。

    2010年2月18日 2:35
  • 你好!   不好意思!请问�
    周雪峰
    2010年2月18日 3:40
    版主
  • 你好!   不好意思!请问可以详细说说你遇到的问题吗?程序卡住具体是指什么?编译错误,还是抛出异常,还是程序一直没有响应!最好提供你的循环代码!
    周雪峰
    2010年2月18日 3:40
    版主
  • 谢谢您!
    以下是截取部分代码:
                int ChildHeight = 0;
                for (int x = 0; x < BallsGroup.Length; x++)
                {
                    if (BallsGroup[x] != null)
                    {
                        RadioButton rb = new RadioButton();
                        rb.Name = rb_name + (x + 1).ToString();
                        rb.Text = BallsGroup[x];
                        rb.Size = new Size(50, 20);
                        rb.Location = new Point(20, 20 + x * 20 + ChildHeight);
                        rb.CheckedChanged += new EventHandler(rb_CheckedChanged);
                        gb.Controls.Add(rb);


                        if (rbsender_name_right == (x + 1).ToString())//start add child groupbox
                        {
                            gb_child.Location = new Point(40, 20 + x * 20 + 20);
                            gb.Controls.Add(gb_child);//这里添加另外一个控件,gb_child该控件及其子控件均已生成。
                            ChildHeight = gb_child.Height;
                        }
                    }
                }
                Control[] cl = gb.Controls.Find(rbsender_name, false);
                if (cl.Length > 0)
                {
                    RadioButton temprb = (RadioButton) cl[0];
                    //temprb.Checked = true;
                }

    2010年2月18日 4:03
  • 你好!
    你检查一下if (cl.Length > 0)是否真的为true,是否cl中真的有元素!
    周雪峰
    2010年2月18日 5:34
    版主
  • 谢谢您!

    Control[] cl = gb.Controls.Find(rbsender_name, false);
    RadioButton temprb = (RadioButton) cl[0];
    MessageBox.Show(temprb.Text);

    以上的代码都可以通过. 说明cl确实已找到了所要找的控件.

    另外, 我已经全部改写了代码, 已经解决了问题.
    但 ,始终不明白 temprb.Checked = true;这句通不过.


    2010年2月18日 8:02
  • 问题解决了就好,你这句通不过,具体的错误提示信息是什么?
    周雪峰
    • 已标记为答案 fss199 2010年2月18日 12:32
    2010年2月18日 8:47
    版主
  • 代码已经改得面目全非, 花了一个小时的时间来搞回原来的样子,还是无法还原本来的面目.

    但我还要衷心地感谢您!
    2010年2月18日 12:12