class test
    {
        Form1 f1 = new Form1();
        String[] strArry;        public test()//构造函数
        {
            MessageBox.Show("进入构造函数");
            if (f1.radioButton1.Checked == true)
            {
                MessageBox.Show("ok");//为什么不能进入这里的?
            }
        }
    }----------------------------
Form1的radioButton1已经设置为public
选定radioButton1后,条件改为false反而进入了if内,请问这是为什么呢?

解决方案 »

  1.   

    因为你默认的radioButton1没有checked啊
    就是false啊
      

  2.   

    vengair() :我已经点选了radioButton1的
      

  3.   

    在构造函数的时候,这个还是false的,
    你点选应该是在Init这个函数中作的,你可以看一下代码
      

  4.   

    把对Form1的实例化写在构造函数里试下
      

  5.   

    sq_qing():早就这样试过,还是不行!
      

  6.   

    从选定开始加断点调试一下,跟踪Checked属性指的变化,很有可能后来你判断这个RadioButton不是你选定的那个对象
      

  7.   

    跟踪到了:
    从Form1 f1 = new Form1();开始
    f1.radioButton1.Checked就一直为false。请问怎样解决?
      

  8.   

    补充:
    但是public partial class Form1 : Form中的radioButton1.Checked是true的.
      

  9.   

    f1.radioButton1.Checked -》this.radioButton1.Checked 
    试试
      

  10.   

    to KCP:这里的this只能引用test类的方法、属性,不能引用主窗体的控件的。
      

  11.   

    我是点选后,才构造函数的。
    ----------
    test 构造的时候创建了一个新的窗体。和你点选得那个窗体并不是同一个对象。这得从人和宇宙的关系说起:此刻你实例化的对象,与你正在点的窗体对象,是不是同一个对象,是谁杀了我!而我又杀了谁?
    似乎我疯了。
      

  12.   

    在Test类的构造函数里传入form1,        String[] strArry;        public test(Form1 f1)//构造函数
            {
                MessageBox.Show("进入构造函数");
                if (f1.radioButton1.Checked == true)
                {
                    MessageBox.Show("ok");//为什么不能进入这里的?
                }
            }
      

  13.   

    to bestshl(快乐的Coder):你的方法应该可行,但无在Form1主类中:Form1 fr = new Form1();//这里提示这个错误未处理 System.StackOverflowException....test mytest = new test(fr);
    ---------------------------
    但如果无不将form1实例化为fr,无怎么传值去test class的构造函数?
      

  14.   

    用this代替fr就System.StackOverflowException问题