простой вопрос

Язык Visual Basic на платформе .NET.

Модераторы: Ramzes, Sebas

RtytS
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 15.07.2007 (Вс) 22:09

простой вопрос

Сообщение RtytS » 15.07.2007 (Вс) 22:34

Здраствуйте. Вы уж простите за, возможно глупый, вопрос. Начинающий я. Есть такой код:
Код: Выделить всё

Dim i As Int32
        For i = 1 To 100
            Dim objGraphics As Graphics
            objGraphics = Me.CreateGraphics
            objGraphics.Clear(System.Drawing.SystemColors.Control)
            objGraphics.DrawLine(System.Drawing.Pens.Red, 0, 0, _
            Me.DisplayRectangle.Width, Me.DisplayRectangle.Height)
        Next

Вопрос----Как сделать перебор объектов objGraphics+i, т.е. для i=1 использовался бы типа objGraphics1, для i=2 objGraphics2 и т.д. до 100. В языках МЭК это, грубо, выглядело бы так:

Код: Выделить всё
Dim i As Int32
        For i = 1 To 100
            Dim objGraphics[i] As Graphics
            objGraphics[i] = Me.CreateGraphics
            objGraphics[i].Clear(System.Drawing.SystemColors.Control)
            objGraphics[i].DrawLine(System.Drawing.Pens.Red, 0, 0, _
            Me.DisplayRectangle.Width, Me.DisplayRectangle.Height)
        Next

[/code]

Другой аналог---есть 1000 Button'ов хочу им всем цвет фона одновременно менять, так тоже, как это в vb?...явно что не так Button[i]...Вообще это называется КОСВЕННАЯ АДРЕСАЦИЯ...в тех языках, где я программил...а в vb? Поиск по Косвенная адресация ничего не дал.
Всем заранее спасибо за ответы.

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 16.07.2007 (Пн) 9:18

вопрос в том, как объекты А, Б и С загнать в массив?
Графику неплохо бы диспозить после использования....
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

iGrok
Артефакт VBStreets
Артефакт VBStreets
 
Сообщения: 4272
Зарегистрирован: 10.05.2007 (Чт) 16:11
Откуда: Сетевое сознание

Сообщение iGrok » 16.07.2007 (Пн) 13:22

Тебе их надо на ходу создавать?

Если я хоть что-то понимаю, то это должно выглядеть примерно так:
Код: Выделить всё
Dim objGraphics(99) as Graphics
Dim i As Int32
        For i = 0 To 99
            Set objGraphics(i) = Me.CreateGraphics
            objGraphics(i).Clear(System.Drawing.SystemColors.Control)
            objGraphics(i).DrawLine(System.Drawing.Pens.Red, 0, 0, _
            Me.DisplayRectangle.Width, Me.DisplayRectangle.Height)
        Next i
label:
cli
jmp label

RtytS
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 15.07.2007 (Вс) 22:09

Сообщение RtytS » 16.07.2007 (Пн) 14:16

возможно пример не совсем удачный переформулирую:
Есть форма, на ней три Textbox и один button, то есть Textbox1, Textbox2, Textbox3 и Button1. По наж-ию кнопки в текст textbox'ов надо занести текст "blablabla", стандартно так
Код: Выделить всё
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
       
        TextBox1.Text = "blablabla"
        TextBox2.Text = "blablabla"
        TextBox3.Text = "blablabla"

    End Sub

а если textbox'ов 2000, то хотелось бы так
Код: Выделить всё
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
        Dim i As Int16
            For i = 1 To 3
            TextBox(i).Text = "blablabla"

        Next
    End Sub


то есть при i=1 в теле цикла TextBox1, при i=2 TextBox2 etc.

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 16.07.2007 (Пн) 16:16

RtytS
Поиск по форуму, массив контролов обжёвывался не меньше ста раз.
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

RtytS
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 15.07.2007 (Вс) 22:09

Сообщение RtytS » 16.07.2007 (Пн) 16:32

что Вы мне эти массивы все подсовываете...мне нужна арифметически вычисляемая адресация, если уж более конкретней к моей задаче...у меня есть куча объектов и адрес для объекта например TextBox должен вычисляться, с i это я для простоты пример привел, ЧТО МНЕ ТЕПЕРЬ ТУЧИ МАССИВОВ необх. создавать?...а если вычисленный адрес выйдет за обозначенный массив???...а ведь мне в зависимости от пути выхода разные объекты создавать надо...Короче без массивов в vb .net нельзя?????

Sebas
Неуловимый Джо
Неуловимый Джо
Аватара пользователя
 
Сообщения: 3626
Зарегистрирован: 12.02.2002 (Вт) 17:25
Откуда: столько наглости такие вопросы задавать

Сообщение Sebas » 16.07.2007 (Пн) 17:12

RtytS

я, лично, ничего не понимаю))))))))))))))
- Я никогда не понимал, почему они приходят ко мне чтобы умирать?

sebas<-@->mail.ru

RtytS
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 15.07.2007 (Вс) 22:09

Сообщение RtytS » 16.07.2007 (Пн) 17:47

вобщем, неужели нельзя написать TextBox1 так, что бы вместо 1 была переменная, без создания массива для textbox...если на форме 5 кнопок, 12 лэйбелов, 8 текстбоксов и 3 чекбокса мне необх. 4 разных массива? иили мож там с коллекциями как-то выкрутится можно?

1Steps
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 505
Зарегистрирован: 20.12.2006 (Ср) 0:50
Откуда: New York

Сообщение 1Steps » 16.07.2007 (Пн) 18:17

Код: Выделить всё
        For Each txt As Control In Me.Controls
            If txt.GetType IsNot GetType(TextBox) Then
                Continue For
            Else
                txt.Text = "bla,bla,bla"
            End If
        Next
Удалена за ненадобностью.

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 16.07.2007 (Пн) 21:01

RtytS писал(а):а если вычисленный адрес выйдет за обозначенный массив???...

Эта.
Перед программированием на .net надо сесть в позу лотоса и долго медитировать, очищая сознание от материй, вредных в рамках этой системы.
Указателей в .net нет. Арифметики с указателями тоже нет. Почему это в рамках данной системы хорошо, объяснять не буду.
Но я, честно говоря, не знаю ни одного языка, где кинутые на форму контролы образовывали бы массив, доступный через арифметику с указателями. Посему, мне совершенно неясно, из чего родилась мысль, что это в принципе возможно или хотя бы где-то бывает.


1Steps писал(а):
Код: Выделить всё
        For Each txt As Control In Me.Controls
            If txt.GetType IsNot GetType(TextBox) Then
                Continue For
            Else
                txt.Text = "bla,bla,bla"
            End If
        Next

Это пособие "как не надо делать".
Код: Выделить всё
        For Each txt As Control In Me.Controls
            If txt.GetType Is GetType(TextBox) Then
                directcast(txt,textbox).Text = "bla,bla,bla"
            End If
        Next
Последний раз редактировалось GSerg 16.07.2007 (Пн) 21:16, всего редактировалось 1 раз.
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

1Steps
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 505
Зарегистрирован: 20.12.2006 (Ср) 0:50
Откуда: New York

Сообщение 1Steps » 16.07.2007 (Пн) 21:13

Спасибо учту :shock:
Удалена за ненадобностью.

Ramzes
Скромный человек
Скромный человек
Аватара пользователя
 
Сообщения: 5004
Зарегистрирован: 12.04.2003 (Сб) 11:59
Откуда: Из гробницы :)

Сообщение Ramzes » 16.07.2007 (Пн) 21:53

GSerg писал(а):Перед программированием на .net надо сесть в позу лотоса и долго медитировать, очищая сознание от материй, вредных в рамках этой системы.

Это 5 :thumleft:
Возьму себе в подпись, если ты не против

RtytS
Начинающий
Начинающий
 
Сообщения: 5
Зарегистрирован: 15.07.2007 (Вс) 22:09

Сообщение RtytS » 17.07.2007 (Вт) 18:24

Вот теперь все ясно...указатели - это тоже в этой теме хотя и не совсем, так если в vb. net нет указателей, то похоже надо на vc++ .net посмотреть, там то точно должны быть...Я ТАК ДУМАЮ...спасибчки за разъяснение...
Но я, честно говоря, не знаю ни одного языка, где кинутые на форму контролы образовывали бы массив, доступный через арифметику с указателями. Посему, мне совершенно неясно, из чего родилась мысль, что это в принципе возможно или хотя бы где-то бывает.

По этому поводу скажу, что делал я нечто подобное при программировании PLC(SCL+LAD)+SCADA(ANSI C+VBS)+OP....нужда заставляла...и там массивов контролов не было, там я это по-другому решал, так вот и искал аналог на vb, а про массивы это Вы песню затянули :-)
Best regards

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 17.07.2007 (Вт) 22:13

RtytS писал(а):то похоже надо на vc++ .net посмотреть, там то точно должны быть...

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

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 17.07.2007 (Вт) 22:23

[вредный совет]
в C# есть указатели, но работать с ними страшно геморно (причём этот гемор -- одна из преднамеренных фич языка)
[/вредный совет]
Изображение


Вернуться в Visual Basic .NET

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 113

    TopList