| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 843 人关注过本帖
标题:请大家帮忙看看,解决一下问题!谢谢!
只看楼主 加入收藏
惜缘
Rank: 1
等 级:新手上路
帖 子:32
专家分:4
注 册:2010-7-2
结帖率:100%
收藏
已结贴  问题点数:10 回复次数:14 
请大家帮忙看看,解决一下问题!谢谢!
问题一:

for (int i = 0; i < this.listBox1.SelectedItems.Count; i++)
            {
                this.listBox2.Items.Add(this.listBox1.SelectedItems[i]);
                this.listBox1.Items.Remove(this.listBox1.SelectedItems[i]);
            }
上面这段代码我是想把在listBox1中的选项转到listBox2中,并在listBox1中删除这几个选项,但是操作出来的现象是:listBox1中的数据在listBox2中只显示了奇数项,且在listBox1中删除了奇数项,我想知道为什么会发生这种现象,应该怎样解决?

问题二:
this.listBox1.SelectedIndex = 0;
这段代码错了吗,SelectedIndex所返回的值不是int型的吗?

问题三:
 private void button6_Click(object sender, EventArgs e)
        {
            int sum=0;
            for(int i=0;i<this.listBox1.Items.Count;i++)
            {
                int n;
                {
                    n = Convert.ToInt32(this.textBox4.Text = this.listBox1.Items[i].ToString());
                    sum += n;
                }
                this.textBox4.Text = sum.ToString();
            }
        }
这段代码中 n = Convert.ToInt32(this.textBox4.Text = this.listBox1.Items[i].ToString());报错了,请问为什么错了?

问题四:
请问:如果我想把listBox1中的所有选项全都弄到listBox2中,应该怎么写?

谢谢!
2010-10-19 21:48
ouxianzhi520
Rank: 8Rank: 8
来 自:重庆
等 级:蝙蝠侠
威 望:3
帖 子:245
专家分:932
注 册:2007-12-1
收藏
得分:2 
第一个问题
for (int i = 0; i < this.listBox1.SelectedItems.Count; i++)
            {
                this.listBox2.Items.Add(this.listBox1.SelectedItems[i]);
            }
for (int i = 0; i < this.listBox1.SelectedItems.Count; i++)
            {
                this.listBox1.Items.Remove(this.listBox1.SelectedItems[i]);
            }

[url=http://blog./ouxianzhi520]csdn个人博客[/url]
2010-10-19 22:37
ouxianzhi520
Rank: 8Rank: 8
来 自:重庆
等 级:蝙蝠侠
威 望:3
帖 子:245
专家分:932
注 册:2007-12-1
收藏
得分:2 
问题二:
this.listBox1.SelectedIndex = 0;
没有问题

问题三:
private void button6_Click(object sender, EventArgs e)
        {
            int sum=0;
            for(int i=0;i<this.listBox1.Items.Count;i++)
            {
                int n;
                {
                    this.textBox4.Text = this.listBox1.Items[i].ToString();
                    n = Convert.ToInt32( this.textBox4.Text()):
            
                    sum += n;
                }
                this.textBox4.Text = sum.ToString();
            }
        }
这段代码中 n = Convert.ToInt32(this.textBox4.Text = this.listBox1.Items[i].ToString());报错了,请问为什么错了?

问题四:
for (int i = 0; i < this.listBox1.Items.Count; i++)
            {
                this.listBox2.Items.Add(this.listBox1.Items[i]);
             }

[url=http://blog./ouxianzhi520]csdn个人博客[/url]
2010-10-19 22:44
tangyunzhong
Rank: 5Rank: 5
来 自:广西
等 级:职业侠客
威 望:4
帖 子:97
专家分:364
注 册:2010-7-28
收藏
得分:1 
问题一:
先不管你的代码属性是否正确论一下。
这里错在你每次都删除了一项this.listBox1.Items,而你的i在不断的增加,你算一下,this.listBox2.Items.Add(this.listBox1.SelectedItems[0])增加一项然后this.listBox1.Items.Remove(this.listBox1.SelectedItems[0]),这时i=0;但到i=1时,你再this.listBox2.Items.Add(this.listBox1.SelectedItems[1])就是原来this.listBox1.SelectedItems[2])了,因为你的第一项(即this.listBox1.SelectedItems[0]))已经删除,所以this.listBox1.SelectedItems[1]等于原来的this.listBox1.SelectedItems[2]了.依次类推,你就会只删除SelectedItems[0]、SelectedItems[2]、SelectedItems[4]...SelectedItems[2n]即奇数项删除。
本人测试过的代码应如下:(有可能我理解你的意思有误)
for (int i = 0; i < this.listBox1.Items.Count; i++)
            {
                this.listBox2.Items.Add(this.listBox1.Items[i]);   
            }
            this.listBox1.Items.Clear();

问题二:
this.listBox1.SelectedIndex = 0;
这个代码是只读的,不能设置值所以错误。SelectedIndex是得到你选择项Index值。

问题三:
Convert.ToInt32(this.textBox4.Text = this.listBox1.Items[i].ToString())
我不知道你想要什么样的效果,但是我知道Convert.ToInt32()的参数是能是一个类型的值,不能在括号里顺便给this.textBox4.Text赋值的,应该写在Convert.ToInt32(this.listBox1.Items[i].ToString())




[ 本帖最后由 tangyunzhong 于 2010-10-20 00:19 编辑 ]
2010-10-20 00:18
hxxiaoxiao
Rank: 2
等 级:论坛游民
威 望:1
帖 子:29
专家分:81
注 册:2010-10-13
收藏
得分:1 
问题1是常见问题,4楼回答的没错。列表每Remove一项,后面的就补上来。你把第一项移除(i为0),第二项就变为第一项,第三项变成第二项。这个时候你再移除第二项(i=1)移除的其实是原来的第三项。4楼说的listBox1.Items.Clear();就是清除列表中所有的项。

问题2上面已经回答的很清楚了,listBox1.SelectedIndex 只能取值不能赋值

问题3你把两句写成一句了,应该分两句写为
this.textBox4.Text = this.listBox1.Items[i].ToString()
n = Convert.ToInt32(this.textBox4.Text);
不知道这个是不是你的意思,总之ToInt32的括号里必须是一个string变量,而不是一个赋值语句。

问题4
listBox2.Items.AddRange(listBox1.Items);
就可以了,避免使用循环,否则列表每添加一项就重绘一次,会闪烁非常厉害,列表项多于100个时非常卡
2010-10-20 04:28
惜缘
Rank: 1
等 级:新手上路
帖 子:32
专家分:4
注 册:2010-7-2
收藏
得分:0 
4楼的第一段代码写的是将listBox1的数据全部弄到listBox2中,但是我想只把我选的数据弄到listBox2中,应该怎么写啊
2010-10-20 18:02
惜缘
Rank: 1
等 级:新手上路
帖 子:32
专家分:4
注 册:2010-7-2
收藏
得分:0 
if (this.listBox1.SelectedIndex == -1)
{
    MessageBox.Show("您没有选中!请重新选择!");
}
这是我想写的代码,既然SelectedIndex不能赋值,那应该怎么写呢?
2010-10-20 18:57
惜缘
Rank: 1
等 级:新手上路
帖 子:32
专家分:4
注 册:2010-7-2
收藏
得分:0 
第三个问题,我试过了,不太好使
2010-10-20 18:57
hxxiaoxiao
Rank: 2
等 级:论坛游民
威 望:1
帖 子:29
专家分:81
注 册:2010-10-13
收藏
得分:1 
listBox1.SelectedItem = listBox1.Items[0];就是选中第0项,以此类推
只想把你选的数据添加到listBox2就是listBox2.Items.Add(listBox1.SelectedItem);
如果你的listbox可以多选,那么就写成
for (int i = 0; i < listBox1.SelectedItems; i++)
{
    listBox2.Items.AddRange(listBox1.SelectedItems[i]);
}
第三个问题根本不知道你想实现什么功能。
2010-10-20 19:14
惜缘
Rank: 1
等 级:新手上路
帖 子:32
专家分:4
注 册:2010-7-2
收藏
得分:0 
第三个问题我想实现的问题是:求我所选几项的和:
2010-10-20 19:41
快速回复:请大家帮忙看看,解决一下问题!谢谢!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.043561 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved