Форум программистов, компьютерный форум, киберфорум
C#: WPF, UWP и Silverlight
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
0 / 0 / 0
Регистрация: 26.08.2015
Сообщений: 14

Перемешивание listbox

01.09.2015, 05:21. Показов 1114. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
  private void swapitems(ListBox lb, int n, int k)
        {
            var buf = lb.Items[n];
            lb.Items[n] = lb.Items[k];
            lb.Items[k] = buf;
        }
 
        private void shufflelist(ListBox lb)
        {
            int I1, I2, C;
            Random rand = new Random();
            C = lb.Items.Count - 1;
            for (int I = 0; I <= lb.Items.Count * 2; I++)
            {
                I1 = rand.Next(0, C);
                I2 = rand.Next(0, C);
                if (I1 != I2)
                    swapitems(lb, I1, I2);
            }
            swapitems(lb, lb.Items.Count - 1, rand.Next(0, C - 1));
        }
Не компилится и не указывает на ошибку. Где ошибка?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
01.09.2015, 05:21
Ответы с готовыми решениями:

MVVM. Как прибиндить TextBox к вложенному ListBox в ListBoxItem основного ListBox
&lt;UserControl x:Class=&quot;Wpf_CareerPattern.Views.MainView&quot; xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot; ...

Сделать выборку в ListBox, в зависимости от выбора Item в другом ListBox'e?
Добрый всем день! Подскажите пожалуйста, как можно сделать выборку в listbox, в зависимости от выбора item в другом listboxe???? Сделал вот...

ListBox - как задать DisplayMemberPath для элементов входящих в ListBox, если они разные, а не одного класса?
ListBox - как задать DisplayMemberPath для каждого из типов элементов входящих в ListBox? Или хотя бы для одного из типов, например, для...

7
87 / 87 / 36
Регистрация: 27.11.2011
Сообщений: 713
01.09.2015, 06:14
Spot-up, а что пишет
0
0 / 0 / 0
Регистрация: 26.08.2015
Сообщений: 14
01.09.2015, 08:58  [ТС]
Не удается создать экземпляр "Window1", определенный в сборке "Spotkar1, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null". Адресат вызова создал исключение. Ошибка в файле разметки "Window1.xaml", строка 1, позиция 9.

Добавлено через 12 минут
C#
1
2
3
4
5
6
7
private void swapitems(ListBox lb, int n, int k)
        {
            MessageBox.Show("n="+n.ToString()+"; k="+k.ToString());
            /* var buf = lb.Items[n];
            lb.Items[n] = lb.Items[k];
            lb.Items[k] = buf;*/
        }
Вот так работает

Добавлено через 29 секунд
точнее, компилируется
0
Заблокирован
01.09.2015, 10:00
Spot-up, Если вы используете привязку, тогда нужно перемешивать не ячейки ListBox, а данные.

Не забывайте, что при использовании
C#
1
rand.Next(a, b);
задается полуоткрытый интервал: [a;b)
В вашем случае удобнее использовать:
C#
1
rand.Next(b);
0
0 / 0 / 0
Регистрация: 26.08.2015
Сообщений: 14
02.09.2015, 04:18  [ТС]
Спасибо!
В вашем случае удобнее использовать:
Это понял.
Если вы используете привязку, тогда нужно перемешивать не ячейки ListBox, а данные.
А это не совсем понял.
0
87 / 87 / 36
Регистрация: 27.11.2011
Сообщений: 713
02.09.2015, 09:00
Spot-up, ну работать не с самими ячейками , а коллекцией которую привязываете
0
Заблокирован
02.09.2015, 10:02
Spot-up, на примере, наверное, должно быть понятнее:
XML
1
2
3
4
5
6
7
8
    <Grid>
        <Grid.RowDefinitions>
            <RowDefinition Height="*"></RowDefinition>
            <RowDefinition Height="Auto"></RowDefinition>
        </Grid.RowDefinitions>
        <ListBox Name="lst" HorizontalAlignment="Left" Margin="10,10,10,10" VerticalAlignment="Top" ItemsSource="{Binding}" Width="100" />
        <Button Grid.Row="1" Margin="10,10,10,10" HorizontalAlignment="Right" Content="Shuffle" Click="Button_Click_1"></Button>
    </Grid>
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
        ObservableCollection<string> Some { get; set; }
        public MainWindow()
        {
            InitializeComponent();
 
            Some = new ObservableCollection<string>();
            Enumerable.Range(0, 25).ToList().ForEach(x => Some.Add(x.ToString()));
            DataContext = Some;
    
        }
 
        private void Button_Click_1(object sender, RoutedEventArgs e)
        {
            var rand = new Random();
            for (int i = Some.Count - 1; i > 0; i--)
            {
                int j = rand.Next(i);
                var t = Some[i];
                Some[i] = Some[j];
                Some[j] = t;
            }
        }
0
0 / 0 / 0
Регистрация: 26.08.2015
Сообщений: 14
03.09.2015, 05:15  [ТС]
Спасибо, работает.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
public partial class Window1 : Window
    {
        ObservableCollection<string> lst { get; set; }
        public Window1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, RoutedEventArgs e)
        {
            lst = new ObservableCollection<string>();
            for (int i = 0; i < 15; i++)
                lst.Add(i.ToString());
            DataContext = lst;
        }
 
        private void swaplist(ListBox lb,int n,int k)
            {
                    var buf = lst[n];
                    lst[n] = lst[k];
                    lst[k] = buf;
            }
        private void shufflelist(ListBox lb)
        {
            int I1, I2, C;
            Random rand = new Random();
            C = lb.Items.Count - 1;
            for (int I = 0; I <= lb.Items.Count * 2; I++)
            {
                I1 = rand.Next(0, C);
                I2 = rand.Next(0, C);
                if (I1!=I2)
                swaplist(lb,I1, I2);
            }
            swaplist(lb,lb.Items.Count - 1, rand.Next(0, C-1));
        }
 
        private void button2_Click(object sender, RoutedEventArgs e)
        {
            shufflelist(listBox1);
        }
    }
А как передать коллекцию в метод?
Нужно чтоб swaplist работал с любой коллекцией, который ему передается.

Добавлено через 12 минут
Разобрался:

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
public partial class Window1 : Window
    {
        ObservableCollection<string> lst { get; set; }
        ObservableCollection<string> lst2 { get; set; }
        public Window1()
        {
            InitializeComponent();
        }
 
        private void button1_Click(object sender, RoutedEventArgs e)
        {
            lst = new ObservableCollection<string>();
            for (int i = 0; i < 15; i++)
                lst.Add(i.ToString());
            listBox1.DataContext = lst;
        }
 
        private void swaplist(ObservableCollection<string> l, int n, int k)
            {
                    var buf = l[n];
                    l[n] = l[k];
                    l[k] = buf;
            }
        private void shufflelist(ObservableCollection<string> oc)
        {
            int I1, I2, C;
            Random rand = new Random();
            C = oc.Count - 1;
            for (int I = 0; I <= oc.Count * 2; I++)
            {
                I1 = rand.Next(0, C);
                I2 = rand.Next(0, C);
                if (I1!=I2)
                swaplist(oc,I1, I2);
            }
            swaplist(oc,oc.Count - 1, rand.Next(0, C-1));
        }
 
        private void button2_Click(object sender, RoutedEventArgs e)
        {
            shufflelist(lst);
        }
 
        private void button3_Click(object sender, RoutedEventArgs e)
        {
            lst2 = new ObservableCollection<string>();
            for (int i = 0; i < 15; i++)
                lst2.Add(i.ToString());
            listBox2.DataContext = lst2;
        }
 
        private void button4_Click(object sender, RoutedEventArgs e)
        {
            shufflelist(lst2);
        }
    }
Ev_Hyper, большое спасибо!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.09.2015, 05:15
Помогаю со студенческими работами здесь

Добавить элемент в ListBox, который находится в ListBox
Привет, у меня есть горизонтальный ListBox ListBox'ов. Но как добавить туда элемент. ListBox ListBox'ов &lt;ListBox...

Чтение файлов по байтно, перемешивание и сохранение кодированного результата.
В общем нужно читать любые файлы, картинки, аудио файлы, что угодно. По байтно, перемешивая по произвольному алгоритму байты и сохранение...

Перемешивание элементов в listbox
В listbox содержится текстовая информация которую нужно перемешать. Прошу помощи!

Перемешивание
Сортировать я умею. А как намерено перемешать записи? При каждом новом исполнении запроса на выборку порядок записей в выборке при их...

Перемешивание списка
Подскажите как сделать перемешивание списка случайным образом, чтобы числа которые находятся в списке просто поменялись местами, вопрос в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru