黑马程序员技术交流社区

标题: 如何遍历一个listbox的内容 [打印本页]

作者: 汪振    时间: 2013-3-1 16:16
标题: 如何遍历一个listbox的内容
本帖最后由 汪振 于 2013-3-1 16:22 编辑

两个问题
1.如何让listbox可以同时选中多行
2.如何遍历这些选中的属性

wq.jpg (6.14 KB, 下载次数: 101)

wq.jpg

作者: 郝滨    时间: 2013-3-1 17:10
listBox.SetSelected(1,true);
listBox.SetSelected(2,true);
listBox.SetSelected(3,true);这样可以多行选择

遍历属性可以foreach语句遍历  也可以以“.”为分隔符 先进行分隔 然后遍历

作者: 赵文博    时间: 2013-3-1 22:21
1.设置ListBox的SelectionMode属性为"Multiple"
2.遍历ListBox属性,这是个List,里面存放的都是选中了的行的对象
代码如下:
界面代码:
<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <ListBox SelectionMode="Multiple"  Height="85" HorizontalAlignment="Left" Margin="96,22,0,0" Name="listBox1" VerticalAlignment="Top" Width="179">
            <ListBoxItem Content="1" />
            <ListBoxItem Content="2" />
            <ListBoxItem Content="3" />
            <ListBoxItem Content="4" />
        </ListBox>
        <Button Content="拼接选中内容" Height="23" HorizontalAlignment="Left" Margin="96,129,0,0" Name="button1" VerticalAlignment="Top" Width="93" Click="button1_Click" />
        <TextBox Height="23" HorizontalAlignment="Left" Margin="96,173,0,0" Name="textBox1" VerticalAlignment="Top" Width="179"   />
    </Grid>
</Window>
C#代码:我在鼠标点击按钮的时候,对LIstBox的选中行进行了遍历,然后拼接其中的文本
private void button1_Click(object sender, RoutedEventArgs e)
        {
            int i = 0;

            ListBoxItem item = null;
            string pjStr = "";
            while (i < listBox1.SelectedItems.Count)
            {
                item = listBox1.SelectedItems as ListBoxItem;
                pjStr = pjStr + item.Content;
                i++;
            }

            textBox1.Text = pjStr;
            
        }
效果如下:
C:\Users\lenovo\Desktop\1.PNG
作者: 赵文博    时间: 2013-3-1 22:22
1.设置ListBox的SelectionMode属性为"Multiple"
2.遍历ListBox属性,这是个List,里面存放的都是选中了的行的对象
代码如下:
界面代码:
<Window x:Class="WpfApplication1.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        Title="MainWindow" Height="350" Width="525">
    <Grid>
        <ListBox SelectionMode="Multiple"  Height="85" HorizontalAlignment="Left" Margin="96,22,0,0" Name="listBox1" VerticalAlignment="Top" Width="179">
            <ListBoxItem Content="1" />
            <ListBoxItem Content="2" />
            <ListBoxItem Content="3" />
            <ListBoxItem Content="4" />
        </ListBox>
        <Button Content="拼接选中内容" Height="23" HorizontalAlignment="Left" Margin="96,129,0,0" Name="button1" VerticalAlignment="Top" Width="93" Click="button1_Click" />
        <TextBox Height="23" HorizontalAlignment="Left" Margin="96,173,0,0" Name="textBox1" VerticalAlignment="Top" Width="179"   />
    </Grid>
</Window>
C#代码:我在鼠标点击按钮的时候,对LIstBox的选中行进行了遍历,然后拼接其中的文本
private void button1_Click(object sender, RoutedEventArgs e)
        {
            int i = 0;

            ListBoxItem item = null;
            string pjStr = "";
            while (i < listBox1.SelectedItems.Count)
            {
                item = listBox1.SelectedItems as ListBoxItem;
                pjStr = pjStr + item.Content;
                i++;
            }

            textBox1.Text = pjStr;
            
        }
效果如下:
C:\Users\lenovo\Desktop\1.PNG
作者: 赵文博    时间: 2013-3-1 22:28
赵文博 发表于 2013-3-1 22:21
1.设置ListBox的SelectionMode属性为"Multiple"
2.遍历ListBox属性,这是个List,里面存放的都是选中了的行 ...



作者: 朱相锟    时间: 2013-3-1 23:30
1.设置ListBox的SelectionMode属性为"Multiple"。
2./// <summary>
        /// 取ListBox选中项id
        /// </summary>
        /// <returns>id数组</returns>
        private int[] GetIDS()
        {
            int[] id = new int[listBox1.SelectedIndices.Count];
            for (int i = 0; i < listBox1.SelectedIndices.Count; i++)
            {
                id[i] = (int)listBox1.SelectedIndices[i];
            }
            return id;
        }
这是遍历选中的ID值,如果想获取其他属性可按此拓展
作者: 汪振    时间: 2013-3-2 12:55
郝滨 发表于 2013-3-1 17:10
listBox.SetSelected(1,true);
listBox.SetSelected(2,true);
listBox.SetSelected(3,true);这样可以多行选 ...

貌似这个方法不能完成多选

1.png (7.88 KB, 下载次数: 47)

1.png

未命名.jpg (34.03 KB, 下载次数: 103)

未命名.jpg

作者: 汪振    时间: 2013-3-2 13:15
赵文博 发表于 2013-3-1 22:22
1.设置ListBox的SelectionMode属性为"Multiple"
2.遍历ListBox属性,这是个List,里面存放的都是选中了的行 ...

你的方法可行的,我试了一下,不过我机器上不知何故没有systm.Windows.Controls的程序集,vs是2010的,程序集是3.5的,不应该没有的呵呵




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2