当前位置:编程学习 > C#/ASP.NET >>

怎么保存复选框的值(多选题)

如图
checkbox都选中了但是点击下一题就只剩一个答案是选中的
我想用checkbox控件保存多选题的答案
代码如下:private void checkAnswer() {     
            chbA.Checked = chbB.Checked = chbC.Checked = chbD.Checked = false;
        
            switch (answer[index]) { 
                case "A":
                    chbA.Checked = true;
                    break;
                case "B":
                    chbB.Checked = true;                    
                    break;
                case "C":
                    chbC.Checked = true;
                    break;
                case "D":
                    chbD.Checked = true;
                    break;
            }        
        }
private void chooseAnswer_click(object sender, EventArgs e)
        {
            CheckBox chb = (CheckBox)sender;  //当前选中的空间对象
            answer[index] = chb.Text;
        }

        private void btnCheckAnswer_Click(object sender, EventArgs e)
        {
            ck = new checkForm();                     
            ck.counts = count;
            ck.answer = answer;
            ck.trueAnswer = Tanswer;
            ck.ShowDialog();
            index = ck.index;
            checkAnswer();
            QuestionMethod();
           
        } .net  控件 --------------------编程问答-------------------- 因为你没有循环  到A那里就break了 --------------------编程问答-------------------- http://blog.csdn.net/xianfajushi/article/details/8840789 --------------------编程问答-------------------- answer[index]存全部选中选项


answer[index] = string.empty;
if( chbA.Checked )
{
answer[index] = chbA.Text; 
}

恢复时判断字符串

if( answer[index].IndexOf("A")>=0 )
{
chbA.Checked = true; 
}
if( answer[index].IndexOf("B")>=0 )
{
chbB.Checked = true; 
}

  
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/ --------------------编程问答-------------------- case break是结束了循环;
CheckBox chb = (CheckBox)sender; 这一句有问题吗
--------------------编程问答-------------------- 三楼的循环我试了,还是只能保存一个 --------------------编程问答-------------------- 去掉break --------------------编程问答-------------------- 下一题 按钮的时候 判断的复选框的状态 累加成字符串保存,然后再清空下状态,准备下一题?
--------------------编程问答--------------------
引用 3 楼 feiyun0112 的回复:
answer[index]存全部选中选项


answer[index] = string.empty;
if( chbA.Checked )
{
answer[index] = chbA.Text; 
}

恢复时判断字符串

if( answer[index].IndexOf("A")>=0 )
{
chbA.Checked = true; 
}
if( answer[index].IndexOf("B")>=0 )
{
chbB.Checked = true; 
}

  
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/


改成:
if( chbA.Checked )
{
answer[index] += chbA.Text; 
} --------------------编程问答-------------------- answer[index] 是一个数组变量还是只是string类型的变量 如果是string类型的变量 就+= --------------------编程问答-------------------- 你这种一题一题的  其实很麻烦,不如放在一个页面上,真的,我老大说的,至于为什么没取到值,肯定是你没循环的 --------------------编程问答-------------------- 你这个是CS吧,至于你那4个多选项是放在同一个容器中吗? --------------------编程问答-------------------- http://www.cnblogs.com/dreamseek/
我刚写的这个不知道对你有没有帮助
--------------------编程问答-------------------- 这种情况就不要用case break了呗,用4个if就能够满足需求 --------------------编程问答--------------------
引用 12 楼 HundredYears 的回复:
http://www.cnblogs.com/dreamseek/
我刚写的这个不知道对你有没有帮助

大神,pnlSelectProject你怎么设计的? --------------------编程问答--------------------
引用 8 楼 a471278514 的回复:
Quote: 引用 3 楼 feiyun0112 的回复:

answer[index]存全部选中选项


answer[index] = string.empty;
if( chbA.Checked )
{
answer[index] = chbA.Text; 
}

恢复时判断字符串

if( answer[index].IndexOf("A")>=0 )
{
chbA.Checked = true; 
}
if( answer[index].IndexOf("B")>=0 )
{
chbB.Checked = true; 
}

  
*****************************************************************************
签名档: http://feiyun0112.cnblogs.com/


改成:
if( chbA.Checked )
{
answer[index] += chbA.Text; 
}

你这一段我早之前就实验过,不成功啊 --------------------编程问答--------------------

 private void button1_Click(object sender, EventArgs e)
        {
            string result = string.Empty;
            if (chkA.Checked)
            {
                result += textBox1.Text;
            }
            if (chkB.Checked)
            {
                result += textBox2.Text;
            }
            if (chkC.Checked)
            {
                result += textBox3.Text;
            }
            if (chkD.Checked)
            {
                result += textBox4.Text;
            }
            this.textBox5.Text = result;
        }
--------------------编程问答-------------------- 你在点击下一题的时候,把这个数据保存到数据库。这样,你点击上一题的时候根据现在的题数查询上一题的答案就是了。    --------------------编程问答--------------------
引用 16 楼 a471278514 的回复:


 private void button1_Click(object sender, EventArgs e)
        {
            string result = string.Empty;
            if (chkA.Checked)
            {
                result += textBox1.Text;
            }
            if (chkB.Checked)
            {
                result += textBox2.Text;
            }
            if (chkC.Checked)
            {
                result += textBox3.Text;
            }
            if (chkD.Checked)
            {
                result += textBox4.Text;
            }
            this.textBox5.Text = result;
        }

大神,你的代码我试了还是不行
private void checkAnswer() 
        {     
            chbA.Checked = chbB.Checked = chbC.Checked = chbD.Checked = false;

            if (chbA.Checked)
            {
                answer[index] += chbA.Text;
            }
            if (chbB.Checked)
            {
                answer[index] += chbB.Text;
            }
            if (chbC.Checked)
            {
                answer[index] += chbC.Text;
            }
            if (chbD.Checked)
            {
                answer[index] += chbD.Text;
            }
        }

        private void chooseAnswer_click(object sender, EventArgs e)
        {
            CheckBox chb = (CheckBox)sender;  //当前选中的空间对象
            answer[index]=chb.Text;
        }
你看看标红的是不是有问题 --------------------编程问答-------------------- http://pan.baidu.com/s/1rEMOT
这是我模仿自学的源码,有大神可以完善多选题的部分吗 --------------------编程问答--------------------
引用 14 楼 popstan 的回复:
Quote: 引用 12 楼 HundredYears 的回复:

http://www.cnblogs.com/dreamseek/
我刚写的这个不知道对你有没有帮助

大神,pnlSelectProject你怎么设计的?

用Pannel控件就可以了啊,这个Pannel控件中只包含A、B、C、D四个选择项就可以了 这样用this.pnlSelectProject.Contorls来获取了里面的控件了 然后遍历 --------------------编程问答--------------------
引用 19 楼 popstan 的回复:
http://pan.baidu.com/s/1rEMOT
这是我模仿自学的源码,有大神可以完善多选题的部分吗

自己做吧,大家都可以帮你,自己解决以后下次才能记住呀。 --------------------编程问答--------------------
引用 18 楼 popstan 的回复:
Quote: 引用 16 楼 a471278514 的回复:



 private void button1_Click(object sender, EventArgs e)
        {
            string result = string.Empty;
            if (chkA.Checked)
            {
                result += textBox1.Text;
            }
            if (chkB.Checked)
            {
                result += textBox2.Text;
            }
            if (chkC.Checked)
            {
                result += textBox3.Text;
            }
            if (chkD.Checked)
            {
                result += textBox4.Text;
            }
            this.textBox5.Text = result;
        }

大神,你的代码我试了还是不行
private void checkAnswer() 
        {     
            chbA.Checked = chbB.Checked = chbC.Checked = chbD.Checked = false;

            if (chbA.Checked)
            {
                answer[index] += chbA.Text;
            }
            if (chbB.Checked)
            {
                answer[index] += chbB.Text;
            }
            if (chbC.Checked)
            {
                answer[index] += chbC.Text;
            }
            if (chbD.Checked)
            {
                answer[index] += chbD.Text;
            }
        }

        private void chooseAnswer_click(object sender, EventArgs e)
        {
            CheckBox chb = (CheckBox)sender;  //当前选中的空间对象
            answer[index]=chb.Text;
        }
你看看标红的是不是有问题

chooseAnswer_click这个方法是干什么用的 --------------------编程问答--------------------
引用 22 楼 a471278514 的回复:
Quote: 引用 18 楼 popstan 的回复:

Quote: 引用 16 楼 a471278514 的回复:



 private void button1_Click(object sender, EventArgs e)
        {
            string result = string.Empty;
            if (chkA.Checked)
            {
                result += textBox1.Text;
            }
            if (chkB.Checked)
            {
                result += textBox2.Text;
            }
            if (chkC.Checked)
            {
                result += textBox3.Text;
            }
            if (chkD.Checked)
            {
                result += textBox4.Text;
            }
            this.textBox5.Text = result;
        }

大神,你的代码我试了还是不行
private void checkAnswer() 
        {     
            chbA.Checked = chbB.Checked = chbC.Checked = chbD.Checked = false;

            if (chbA.Checked)
            {
                answer[index] += chbA.Text;
            }
            if (chbB.Checked)
            {
                answer[index] += chbB.Text;
            }
            if (chbC.Checked)
            {
                answer[index] += chbC.Text;
            }
            if (chbD.Checked)
            {
                answer[index] += chbD.Text;
            }
        }

        private void chooseAnswer_click(object sender, EventArgs e)
        {
            CheckBox chb = (CheckBox)sender;  //当前选中的空间对象
            answer[index]=chb.Text;
        }
你看看标红的是不是有问题

chooseAnswer_click这个方法是干什么用的

是点击选择项的时候发生的事件。感觉这样设计是不是有问题? --------------------编程问答--------------------
引用 23 楼 HundredYears 的回复:
Quote: 引用 22 楼 a471278514 的回复:

Quote: 引用 18 楼 popstan 的回复:

Quote: 引用 16 楼 a471278514 的回复:



 private void button1_Click(object sender, EventArgs e)
        {
            string result = string.Empty;
            if (chkA.Checked)
            {
                result += textBox1.Text;
            }
            if (chkB.Checked)
            {
                result += textBox2.Text;
            }
            if (chkC.Checked)
            {
                result += textBox3.Text;
            }
            if (chkD.Checked)
            {
                result += textBox4.Text;
            }
            this.textBox5.Text = result;
        }

大神,你的代码我试了还是不行
private void checkAnswer() 
        {     
            chbA.Checked = chbB.Checked = chbC.Checked = chbD.Checked = false;

            if (chbA.Checked)
            {
                answer[index] += chbA.Text;
            }
            if (chbB.Checked)
            {
                answer[index] += chbB.Text;
            }
            if (chbC.Checked)
            {
                answer[index] += chbC.Text;
            }
            if (chbD.Checked)
            {
                answer[index] += chbD.Text;
            }
        }

        private void chooseAnswer_click(object sender, EventArgs e)
        {
            CheckBox chb = (CheckBox)sender;  //当前选中的空间对象
            answer[index]=chb.Text;
        }
你看看标红的是不是有问题

chooseAnswer_click这个方法是干什么用的

是点击选择项的时候发生的事件。感觉这样设计是不是有问题?

嗯, 是点击一下checkbox就把它的值记录在answer[index]中
--------------------编程问答-------------------- 没有必要,你去掉再试试。 --------------------编程问答-------------------- 因为 你在保存的时候记录的值   所以没有必要在点击checkbox的时候再记录了。 --------------------编程问答-------------------- 那样的话  肯定只有一个值。 每次执行 都把前面的值覆盖掉了。 --------------------编程问答-------------------- 楼主可以试着改变一下思路,也许改变一下就一目了然了。 --------------------编程问答--------------------
引用 28 楼 HundredYears 的回复:
楼主可以试着改变一下思路,也许改变一下就一目了然了。

是把题目都设计在一个页面上吗? --------------------编程问答--------------------
引用 27 楼 a471278514 的回复:
那样的话  肯定只有一个值。 每次执行 都把前面的值覆盖掉了。

但是答案不是不能保存,只是只能保存单个的答案。
保存的答案如下
--------------------编程问答--------------------
引用 29 楼 popstan 的回复:
Quote: 引用 28 楼 HundredYears 的回复:

楼主可以试着改变一下思路,也许改变一下就一目了然了。

是把题目都设计在一个页面上吗?

你的题不是根据数据动态生成出来的吗?一个页面一个题? --------------------编程问答--------------------
引用 30 楼 popstan 的回复:
Quote: 引用 27 楼 a471278514 的回复:

那样的话  肯定只有一个值。 每次执行 都把前面的值覆盖掉了。

但是答案不是不能保存,只是只能保存单个的答案。
保存的答案如下


private void chooseAnswer_click(object sender, EventArgs e)
        {
            CheckBox chb = (CheckBox)sender;  //当前选中的空间对象
            if (answer[index].IndexOf(chb.Text)==-1)
            {
                answer[index] += chb.Text+",";
            }
        }
--------------------编程问答--------------------
引用 30 楼 popstan 的回复:
Quote: 引用 27 楼 a471278514 的回复:

那样的话  肯定只有一个值。 每次执行 都把前面的值覆盖掉了。

但是答案不是不能保存,只是只能保存单个的答案。
保存的答案如下

你的chooseAnswer_click这个方法,点击checkbox就存一个值到answer[index]  那当然每次只有一个值啦。  你不要在点击checkbox的时候存值,要在点击下一题的时候存,懂?
点击下一题时,你先获取到所有选中的checkbox然后再存到answer[index]中。不就有多个答案了。 --------------------编程问答-------------------- --------------------编程问答-------------------- 我插,回了这么多,分是没戏了 --------------------编程问答-------------------- like this:
http://www.cnblogs.com/insus/articles/2081639.html
http://www.cnblogs.com/insus/archive/2013/04/24/3039115.html
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,