C#如何判断列表框有无重复的项目---唐寒枫
- 格式:doc
- 大小:222.50 KB
- 文档页数:6
C#如何判断列表框有无重复的项目
2013年11月27日星期三
大家刚开始学习listbox控件的时候可能会遇到一个问题,就是已经学会对列表框进行增删改了,但是对于“增”这一项遇到了一点麻烦,什么麻烦呢?
当我们不做过多的操作进行列表框内容添加时往往会插入一些重复值,但是我们又不想插入重复值,我们想列表框里面的内容是独一无二的,但是又不知道怎么去做,现在我们来实现一下:
目标功能:
对列表框进行内容添加,当插入的内容在列表框中已经存在时不允许插入,并给出相应的提示;当插入的内容在列表框中没有时便插入内容。
目标分析:
我们首先要确定的一点是必须得有一个判断语句,用来判断要插入的和列表框里面的内容是否重复;因为列表框里面不一定只有一个内容,可能有多个,所以我们应该逐一判断,既然是逐一,那我们就应该借助于循环语句实现。
好了,判断语句、循环语句就是我们所利用的核心。
目标准备:
首先看一下软件运行效果图:
(PS:在这里先说一下,实现这种功能在C#里面有两种方法,一种是我们自己写算法,一种是直接利用C#提供的方法,毋庸置疑,第二肯定是简单的。
所以我们把这两种方法都实现一下,首先我们先看看我们自己写算法怎么实现)
定义好控件属性,布置好界面之后我们开始写代码:
private void button1_Click(object sender, EventArgs e)
{
//添加项目
#region
if (textBox1.Text == "")
{
MessageBox.Show("还未输入要添加的内容,该操作不能执行", "友情提示", MessageBoxButtons.OK, rmation);
textBox1.Focus();//提示完之后接着文本框获取焦点,方便用户操
作 }
else
{
if (list.Items.Count == 0)//如果列表框里面没有任何内容,此时直接添加
{
list.Items.Add(textBox1.Text);
textBox1.Text = "";
textBox1.Focus();
}
else
{
#endregion
for (int i = 0; i <= list.Items.Count ; i++)
{
if (textBox1.Text == list.Items[i].ToString())//将输入的的内容和列表框原有内容进行判断
{
MessageBox.Show("已经有相同的内容了","友情提示
",MessageBoxButtons.OK,rmation);
textBox1.Text = "";
textBox1.Focus();
break;
}
else if (i == list.Items.Count - 1)//这一步很关键,如果不加这一个判断会导致重复添加一些不必要的内容。
这一步就是为了判断是否遍历了所有内容,因为
list.Items[i]是从零开始的,也就是说它的实际判断个数要比count统计的个数少1,所以在这里要
减去1
{
list.Items.Add(textBox1.Text);
textBox1.Text = "";
textBox1.Focus();
break;
}
}
}
}
}
private void button2_Click(object sender, EventArgs e)
{
//删除选中项
//这里也应该添加一个判断,防止用户还未添加任何内容就点击删除
if(list.Text=="")//如果列表框开始运行没有内容时,进行判断
{
MessageBox.Show("还没有选中要删除的项目或者还没有添加任何内容,不能执行删除", "友情提示", MessageBoxButtons.OK, rmation);
}
else
list.Items.RemoveAt(list.SelectedIndex);
}
private void button4_Click(object sender, EventArgs e)
{
if (list.SelectedIndex == 0 || this.list.Text=="")//判断是否到达最上面,另外还要检查列表框里面是否有内容,否则也会报错
{
MessageBox.Show("已经上最上面一项或者还没有添加任何内容", "友情提示", MessageBoxButtons.OK, rmation);
}
else
list.SelectedIndex -= 1;
}
private void button5_Click(object sender, EventArgs e)
{
if (list.SelectedIndex == list.Items.Count - 1)
{
MessageBox.Show("已经是最后一项了,不能继续了", "友情提示", MessageBoxButtons.OK, rmation);
}
else
list.SelectedIndex += 1;
}
private void button3_Click(object sender, EventArgs e)
{ //清空列表框
list.Items.Clear();
}
}
运行测试:
以上就是我们自己写的算法,现在我们看看C#提供的方法:
///这也是判断插入的项是否已经存在,这是C#自带的一个方法
private void button6_Click(object sender, EventArgs e)
{
if (list.Items.Contains(textBox1.Text) == false) {
list.Items.Add(textBox1.Text);
}
}
从中可以看出,我们就死利用了一个“Contains”方法,它的作用就是:确定指定的项是否位于集合内
ok,第二种方法完成!看完之后你是不是顿时有吐血的感觉?就这么点代码?没错,就这些,剩下的功能根据自己的需要去写吧。
从这里也可以看出,C#集成度相当的高,一些常用的算法已经事先帮你写好了,我们只需要调用即可,提高了工作效率。
但是本人还是建议,在练习之中能自己写算法就自己写算法,锻炼自己分析问题、解决问题的能力,真到了实际工作当然是越快越好了,能“偷懒”就偷懒O(∩_∩)O。
C#虽然好用,但是如果你一直使用它提供的东西,慢慢的你的逻辑思维能力可能就会下降。
我一直就建议我身边的朋友说,学习就要学会三多:多看、多练、多悟。