Форум программистов, компьютерный форум, киберфорум
Наши страницы
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
 
Guman000
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 3
#1

Матрица из TextBox. Реализовать изменение размерности TrackBar'om

13.01.2014, 20:00. Просмотров 420. Ответов 3
Метки нет (Все метки)

Добрый день.
Пытаюсь сделать создание / изменение размера матрицы из textbox с помощью 2 trackbar
Создать получается, но с удаление лишних textbox, при перемещении trackbar в обратную сторону, textbox не удаляются.
Для примера, пытался удалить 1 textbox tb1(1,1).
Прошу помощи.
Код:

vb.net
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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
Public Class Form1
    Dim tb1(,) As TextBox
    Dim i, j As Integer
    Dim counter1 As Integer = 0
    Private Sub TrackBar1_Scroll(sender As Object, e As EventArgs) Handles TrackBar1.Scroll
        Dim n As Integer
        Dim m As Integer
        Dim dx As Integer = 0
        Dim dy As Integer = 0
        'Dim counter1 As Integer = 0
        n = CInt(TrackBar1.Value)
        m = CInt(TrackBar2.Value)
        'If tb1 Is Nothing Then
        '    ReDim tb1(n, m)
        'End If
        ReDim tb1(n, m)
        If TrackBar1.Value < counter1 Then
            Me.Controls.Remove(tb1(1, 1))
        Else
            For Me.j = 1 To m
                For Me.i = 1 To n
                    tb1(i, j) = New TextBox
                    tb1(i, j).Text = "tbox" & i & j
                    tb1(i, j).Name = "tb" & i & j
                    tb1(i, j).Left = 65 + dx
                    tb1(i, j).Top = 100 + dy
                    tb1(i, j).Height = 20
                    tb1(i, j).Width = 40
                    Me.Controls.Add(tb1(i, j))
                    dx += 50
                Next
                dx = 0
                dy += 30
            Next
            counter1 = i
        End If
    End Sub
 
    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
 
    End Sub
 
    Private Sub TrackBar2_Scroll(sender As Object, e As EventArgs) Handles TrackBar2.Scroll
        Dim n As Integer
        Dim m As Integer
        Dim g As Integer
        Dim dx As Integer = 0
        Dim dy As Integer = 0
        Dim counter2 As Integer = 0
        n = CInt(TrackBar1.Value)
        m = CInt(TrackBar2.Value)
        ReDim tb1(n, m)
        If TrackBar1.Value < counter2 Then
        Else
            For Me.j = 1 To m
                For Me.i = 1 To n
                    tb1(i, j) = New TextBox
                    tb1(i, j).Text = "tbox" & i & j
                    tb1(i, j).Left = 65 + dx
                    tb1(i, j).Top = 100 + dy
                    tb1(i, j).Height = 20
                    tb1(i, j).Width = 40
                    Me.Controls.Add(tb1(i, j))
                    dx += 50
                    counter2 = j
                Next
                dx = 0
                dy += 30
            Next
        End If
    End Sub
End Class
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
13.01.2014, 20:00
Ответы с готовыми решениями:

Изменение TextBox
Есть код 'заполнение поля textbox при загрузке страницы Protected Sub...

Реализовать многострочный TextBox
1. Ребят, смотрите я создал 2 ComboBox 1 кнопку и 1 TextBox.Вообщем значения...

Класс: Реализовать класс Matrix - матрица, на основе двухмерного массива размерности M на N...
1) Реализовать класс Matrix - матрица, на основе двух-мерного целочисленного...

Дана матрица размерности N на M
Дана матрица размерности N на M. Найти в матрице строку с наибольшей суммой...

Вещественная матрица размерности m*n
Разработать алгоритм и программу решения задачи: Дана вещественная матрица...

3
dimsaratov
348 / 287 / 78
Регистрация: 02.10.2013
Сообщений: 475
Записей в блоге: 5
13.01.2014, 20:34 #2
vb.net
1
 Me.Controls.Remove(tb1(1, 1))
ты удаляешь только tb1(1,1)
vb.net
1
ReDim Preserve tb1(n, m)
почитай MSDN насколько я помню при переопределении многомерных массивов, можно изменить только одну последнюю размерность
0
Guman000
0 / 0 / 0
Регистрация: 04.12.2013
Сообщений: 3
14.01.2014, 00:33  [ТС] #3
"-ты удаляешь только tb1(1,1)"

Я пытался удалить tb(1,1) для примера.

Проблема в том что я переопределяю tb(n,m) и в нем ничего нет.
Попробовал поставить брейкпоинт на
vb.net
1
ReDim tb(n,m)
Пишет, что он пустой = Nothing

Сделал так
vb.net
1
2
3
        If tb1 Is Nothing Then
            ReDim tb1(n, m)
        End If
Но тогда вылазит экзепшн о переполнении массива
vb.net
1
tb1(i, j) = New TextBox
( //индекс вне границ диапазона)
0
dimsaratov
348 / 287 / 78
Регистрация: 02.10.2013
Сообщений: 475
Записей в блоге: 5
14.01.2014, 20:19 #4
RedDim без Preserve очищает содержимое массива
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
14.01.2014, 20:19

Матрица произвольной размерности
Разработать класс, объект которого реализует «пользовательский» тип данных....

Матрица произвольной размерности
Матрица произвольной размерности, представленная размерностями и линейным...

Изменение размерности массива
Добрый день, есть задача: нужно считать строку (элементарное математическое...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru