Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 5.00/7: Рейтинг темы: голосов - 7, средняя оценка - 5.00
0 / 0 / 0
Регистрация: 18.10.2013
Сообщений: 15

Ошибка выхода за пределы массива при обращении к нескольким Panel

11.05.2014, 23:43. Показов 1552. Ответов 11
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте.
Есть 10 элементов Panel, нужно их выводить в рандомном порядке при нажатии на кнопку button1 (далее) и чтобы они повторно не показывались.
Как это правильно сделать?

Добавлено через 54 минуты
Добавил первые три элемента в массив, вот код:
VB.NET
1
2
3
4
5
6
7
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim Panel() As Panel = {Panel1, Panel2, Panel3}
        For i = 1 To 3
            Panel(i).Visible = True
        Next i
    End Sub
End Class
При компиляции ошибка:



Где я ошибаюсь?

Добавлено через 59 минут
VB.NET
1
2
3
4
5
   Dim Panel(0 To 3) As Panel
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        For i = 0 To 3
            Me.Controls("Panel" & i).Visible = True
        Next i
так тоже не работает
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
11.05.2014, 23:43
Ответы с готовыми решениями:

Ошибка из-за выхода за пределы массива
Здравствуйте! Я делаю приложение в Android Studio и столкнулся с проблемой. Я создал listView и адаптер. Мне нужен был живой поиск и я...

Длинная арифметика (сумма) и ошибка выхода массива за пределы
Всем доброго времени суток, ребят, пишу программу по базовым операциям на длинную арифметику, начал как наверное все начинают с суммы,...

Удаление компонента программно. Ошибка выхода за пределы массива
procedure clearImageBox ; var i:integer; begin for i:=0 to form2.ScrollBox2.ComponentCount-1 do if ...

11
Строитель
 Аватар для Nord790
889 / 556 / 194
Регистрация: 01.04.2014
Сообщений: 610
Записей в блоге: 6
12.05.2014, 07:14
Ошибка в перечислении
VB.NET
1
2
3
4
5
6
7
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim Panel() As Panel = {Panel1, Panel2, Panel3}
        For i = 0 To 2
            Panel(i).Visible = True
        Next i
    End Sub
End Class
1
0 / 0 / 0
Регистрация: 18.10.2013
Сообщений: 15
12.05.2014, 07:49  [ТС]
Nord790, Да, заработало, ну как теперь сделать, чтобы при нажатии первый раз на button1 показывалась panel1, при втором нажатии button1 - panel2 (тоесть по очередно)?
0
Строитель
 Аватар для Nord790
889 / 556 / 194
Регистрация: 01.04.2014
Сообщений: 610
Записей в блоге: 6
12.05.2014, 07:59
Лучший ответ Сообщение было отмечено Dirrssaa как решение

Решение

VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim Panel() As Panel = {Panel1, Panel2, Panel3}
        Static a = 0
For i = 0 To Panel.Length
            If i = a Then
Panel(i).Visible = True
Else
Panel(i).Visible = False
End If
        Next i
a+=1
If a = Panel.Length Then a = 0
    End Sub
End Class
1
0 / 0 / 0
Регистрация: 18.10.2013
Сообщений: 15
12.05.2014, 08:05  [ТС]
Nord790, ошибка:
Миниатюры
Ошибка выхода за пределы массива при обращении  к нескольким Panel  
0
Строитель
 Аватар для Nord790
889 / 556 / 194
Регистрация: 01.04.2014
Сообщений: 610
Записей в блоге: 6
12.05.2014, 08:06
забыл
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim Panel() As Panel = {Panel1, Panel2, Panel3}
        Static a = 0
For i = 0 To Panel.Length-1
            If i = a Then
Panel(i).Visible = True
Else
Panel(i).Visible = False
End If
        Next i
a+=1
If a = Panel.Length Then a = 0
    End Sub
End Class
0
0 / 0 / 0
Регистрация: 18.10.2013
Сообщений: 15
12.05.2014, 08:08  [ТС]
Nord790, буду благодарен.
0
Строитель
 Аватар для Nord790
889 / 556 / 194
Регистрация: 01.04.2014
Сообщений: 610
Записей в блоге: 6
12.05.2014, 08:34
Лучший ответ Сообщение было отмечено Dirrssaa как решение

Решение

вот более сжатый код
VB.NET
1
2
3
4
5
6
Dim Panel() As Panel = {Panel1, Panel2, Panel3}
        Static index As Integer = 0
        For i = 0 To Panel.Length - 1
            If i = index Then Panel(i).Visible = True Else Panel(i).Visible = False
        Next
        index += 1 : If index = Panel.Length Then index = 0
1
0 / 0 / 0
Регистрация: 18.10.2013
Сообщений: 15
12.05.2014, 09:26  [ТС]
Nord790, работает великолепно, если можете, подскажите, то как здесь правильно добавить randomize, чтобы panel1-3 показывалась рандомно и не открывалась повторно?
0
Строитель
 Аватар для Nord790
889 / 556 / 194
Регистрация: 01.04.2014
Сообщений: 610
Записей в блоге: 6
13.05.2014, 02:46
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
Private _rand As New Random
    Private _oldInt As Integer = -1
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim Panel() As Panel = {Panel1, Panel2, Panel3, Panel4, Panel5, Panel6, Panel7, Panel8, Panel9, Panel10}
        Dim _int As Integer = 0
        Do
            _int = _rand.Next(Panel.Length)
            If Not _oldInt = _int Then
                Exit Do
            End If
        Loop
        Dim selectPanel = Panel(_int)
        selectPanel.Visible = True
        For Each p In Panel
            If Not p.Equals(selectPanel) Then p.Visible = False
        Next
        _oldInt = _int
    End Sub
1
0 / 0 / 0
Регистрация: 18.10.2013
Сообщений: 15
20.05.2014, 01:34  [ТС]
Nord790, рандомайз работает отлично, но как сделать так, чтобы при нажатии бутон1 рандомно показывало одну с 10 panel, но при этом определенный panel который показался НЕ ДОЛЖЕН больше показываться?
0
Строитель
 Аватар для Nord790
889 / 556 / 194
Регистрация: 01.04.2014
Сообщений: 610
Записей в блоге: 6
20.05.2014, 04:18
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    Private _rand As New Random
    Private OldShowPanels() As Integer = {}
    Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
        Dim Panel() As Panel = {Panel1, Panel2, Panel3, Panel4, Panel5, Panel6, Panel7, Panel8, Panel9, Panel10}
        Dim _int As Integer = -1
        If Not OldShowPanels.Length = Panel.Length Then
            Do
                _int = _rand.Next(Panel.Length)
                If Not OldShowPanels.Contains(_int) Then
                    ReDim Preserve OldShowPanels(OldShowPanels.Length)
                    OldShowPanels(OldShowPanels.Length - 1) = _int
                    Exit Do
                End If
            Loop
            Dim selectPanel = Panel(_int)
            selectPanel.Visible = True
            For Each p In Panel
                If Not p.Equals(selectPanel) Then p.Visible = False
            Next
        End If
    End Sub
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.05.2014, 04:18
Помогаю со студенческими работами здесь

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

Класс "Автомобиль" и ошибка выхода за пределы массива
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace Список_авто { class...

Фильтрация по нескольким параметрам при обращении к БД
Есть база, но основании следующего кода: public class Auto { public int AutoId { get; set; } public string BrandName { get;...

Проверка выхода за пределы массива
как сделать проверку на выход за пределы массива?

Ошибка выхода за пределы границ вектора
как исправить ошибку?


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

Или воспользуйтесь поиском по форуму:
12
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru