情况是这样,有一组单选按钮 两个不同的类别,比如 学生 和 非学生, 下面的输入字段信息根据类别不同显示不同的必填项,现在是当选择了学生,也输入了一些基本信息,如果这时切换选择了 非学生,在这个非学生单选按钮的点击事件(其实这个时候从界面上看已经被选中了)进行判断提示,是否真的确认切换, 如果选择否就是不切换,  这个时候就需要手工吧按钮设为 学生 setcheck(1) 非学生 setcheck(0), 问题来了,如果仅在这个界面行貌似黑点一直切换正常的,但是如果切换到其它页面,然后一直都在不停的提示是否切换的对话框,貌似一直在非学生的点击事件...求教

解决方案 »

  1.   


    说的有点乱了,代码或许清楚点,
    [code]
    // 学生单选按钮点击事件 对应不同的信息字段输入
    void CtestttestDlg::OnBnClickedRadioStudent()
    {
     AfxMessageBox(_T("学生信息"));
    }// 非学生单选按钮点击事件 对应不同的信息字段输入
    void CtestttestDlg::OnBnClickedRadioNotstudent()
    {
    if (IDYES != AfxMessageBox(_T("是否确认切换到非学生页面,已输入的信息将被清空"),MB_YESNO))
    {
                    // 状态改变回去,还是选中学生单选按钮
    ((CButton*)GetDlgItem(IDC_RADIO_STUDENT))->SetCheck(1);
    ((CButton*)GetDlgItem(IDC_RADIO_NOTSTUDENT))->SetCheck(0); return;
    }
    AfxMessageBox(_T("非学生信息"));
    }[/code]切换到非学生的时候 弹框提示,如果选择否 不切换的话,焦点在这个对话框的时候界面显示是正常的,如果随便切换到其他再切换回来,这时候对话框要重绘一下的,然后就开始不断的在弹框是否切换 
      

  2.   

    如果说是在单选按钮本身的点击事件中 又处理了setcheck 等于又给自己发了消息指令,不断的进入点击事件,但是同样的学生的单选按钮也setcheck了,但是就没有进入它的点击事件里去了
      

  3.   


    下午在csdn搜索了半天没有发现同样的问题,刚刚人品爆发了找到了一个10年一朋友问的,当时讨论的也很激烈,里面给了解决方法,感兴趣的朋友可以看下,貌似这个让用户选择的功能常用才是 地址:http://bbs.csdn.net/topics/147053 关于radio button的“小”问题求助 @z_sky ;
    里面提到的解决办法是 在setcheck以后把焦点移除到别的控件上 GetDlgItem(IDOK)->SetFocus(); 困扰了一个下午的问题,终于可以睡个好觉了,哈哈 同时感谢上面几位