A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 汪振 中级黑马   /  2013-3-1 16:16  /  3564 人查看  /  7 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 汪振 于 2013-3-1 16:22 编辑

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

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

wq.jpg

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

7 个回复

倒序浏览
listBox.SetSelected(1,true);
listBox.SetSelected(2,true);
listBox.SetSelected(3,true);这样可以多行选择

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

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
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
回复 使用道具 举报
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

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
赵文博 发表于 2013-3-1 22:21
1.设置ListBox的SelectionMode属性为"Multiple"
2.遍历ListBox属性,这是个List,里面存放的都是选中了的行 ...


回复 使用道具 举报
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值,如果想获取其他属性可按此拓展

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

回复 使用道具 举报
郝滨 发表于 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, 下载次数: 101)

未命名.jpg
回复 使用道具 举报
赵文博 发表于 2013-3-1 22:22
1.设置ListBox的SelectionMode属性为"Multiple"
2.遍历ListBox属性,这是个List,里面存放的都是选中了的行 ...

你的方法可行的,我试了一下,不过我机器上不知何故没有systm.Windows.Controls的程序集,vs是2010的,程序集是3.5的,不应该没有的呵呵
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马