none
关于listbox的遍历 RRS feed

  • 问题

  • 一个listbox中从上到下有几个strings,如何在下面的textbox中将其显示出来?

    listbox1.items.tostring()和listbox1.tostring()的区别是什么?

    2007年12月18日 8:26

答案

  • 只需要遍历ListBox的Items属性即可.

    程序块
    foreach (string itemValue in listBox1.Items)
    {
        textBox1.Text += itemValue;
    }

     

     

    ListBox.Items.ToString()方法实际上是Object的ToString方法,返回一个表示当前对象的字符串,在这里会返回System.Windows.Forms.ListBox+ObjectCollection

     

    ListBox.ToString()方法也是继承自Object,但是被覆盖(override)了,它会返回当前对象类型ListBox的名称和包含的item个数及第一个item的文本.类似于System.Windows.Forms.ListBox, Items.Count: 10, Items[0]: sdlfkj

     

    TIPS:在编程过程中,如果您使用的是Visual Studio,可以用鼠标停在方法名上,IDE会提示方法的摘要及返回类型等非常有用的信息,还可以将鼠标定位在方法名上点开右键,选择"Go to definition"(中文是转到定义),这个时候会打开Object Browser(对象浏览器),就可以看到完整的类的信息了.

    2007年12月18日 8:50
    版主

全部回复

  • 只需要遍历ListBox的Items属性即可.

    程序块
    foreach (string itemValue in listBox1.Items)
    {
        textBox1.Text += itemValue;
    }

     

     

    ListBox.Items.ToString()方法实际上是Object的ToString方法,返回一个表示当前对象的字符串,在这里会返回System.Windows.Forms.ListBox+ObjectCollection

     

    ListBox.ToString()方法也是继承自Object,但是被覆盖(override)了,它会返回当前对象类型ListBox的名称和包含的item个数及第一个item的文本.类似于System.Windows.Forms.ListBox, Items.Count: 10, Items[0]: sdlfkj

     

    TIPS:在编程过程中,如果您使用的是Visual Studio,可以用鼠标停在方法名上,IDE会提示方法的摘要及返回类型等非常有用的信息,还可以将鼠标定位在方法名上点开右键,选择"Go to definition"(中文是转到定义),这个时候会打开Object Browser(对象浏览器),就可以看到完整的类的信息了.

    2007年12月18日 8:50
    版主
  • 我原本也这么认为,的确这样的方法能够通过编译。但是问题是在应用的时候系统报错:

    无法将类型为“System.Web.UI.WebControls.ListItem”的对象强制转换为类型“System.String”。

    2007年12月18日 8:56
  • 哦,sorry.我认为是Windows Form.

    在Web  Form里面不能这样调用,Web Form里的ListBox里的Items是ListItem对象.每个ListItem对象包含Text和Value属性,Text就是我们在网页上看到的文字,Value 就是它代表的值.所以,应该用如下代码遍历一个ListBox的每项:

    程序块
    foreach (ListItem item in ListBox1.Items)
    {
         TextBox1.Text += item.Text;
    }

     

    如果是遍历每项的值,就用item.Value即可.

    Have fun.
    2007年12月18日 9:04
    版主
  • 我自己调试出来了,感谢Shiny Zhu的解答:)

    代码应该如下:

    string par=String.Empty;

    foreach(ListItem ItemValue in Listbox1.Items)

    {

     par=ItemValue.Value;

    }

    Textbox2.Text=par;

    2007年12月18日 9:07
  • 程序块

    foreach (ListItem item in ListBox1.Items)
            {
                TextBox1.Text += item.Text ;
            }

     

     

    2007年12月18日 9:09
    版主
  • good,编程的乐趣就在于发现问题解决问题.

    2007年12月18日 9:12
    版主
  •  

    .text都无法显示,一定要用.value

    而且要放在一个新的string中

    value和text又还有什么不同呢

    2007年12月18日 9:13
  • ASP.NET的控件最终在用户那里都是以HTML代码显示的。
    ListBox控件是对应代码为:

    程序块

    <select>

      <option value="xx">text shown</option>

      <option value="xxx">text here</option>

    </select>

     

    红色的xx就是Value属性,蓝色的text shown就是Text属性了.Text是显示在页面上供我们阅读的,Value就是它提供来方便编程使用的值.
     

    HTML的select可以参考http://w3schools.com/tags/tag_select.asp
    2007年12月18日 9:33
    版主