Доступ к свойствам объектов главной формы через метод класса

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

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

DJ Dimps
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 26.07.2004 (Пн) 6:37
Откуда: Зеленоград

Доступ к свойствам объектов главной формы через метод класса

Сообщение DJ Dimps » 01.11.2004 (Пн) 23:15

Есть VB.NET 2003.
Есть программа. На главной форме есть объекты типа текстбоксов.
Создаю класс (new->class...), туда пишу:
Public Class Preset
Public Fullscreen As Boolean = True
Public ZoomedLCD As Boolean = False
.............
там список переменных класса.
А вот метод класса, который по идее должен изменять свойства объектов главной формы.
Public Sub UsePreset()
ни Form1.CheckBox1.Checked = Fullscreen
ни CheckBox1.Checked = Fullscreen
не работает, т.к. среда просто не понимает, к чему я обращаюсь. Как получить доступ к свойствам этих объектов главной формы?

ЗЫ: по идее, поставил public этим объектам, не помогло.
КАК?

DJ Dimps
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 26.07.2004 (Пн) 6:37
Откуда: Зеленоград

Сообщение DJ Dimps » 02.11.2004 (Вт) 0:44

areh:
"у тебя должен быть объявлена глобальная переменная типа Form1:

Public my_Form1 as New Form1

...

обращение к свойству:
my_Form1.PictureBox1.Image = Image.FromFile("...")
my_Form1.Show()

вот."

Нашёл в другой теме. Сеньк. =)

Ronin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 635
Зарегистрирован: 13.02.2002 (Ср) 14:16
Откуда: Россия, Москва

Сообщение Ronin » 02.11.2004 (Вт) 1:19

Доброго времени суток!

Вот, я бы сделал такое решение. Думаю разберешься:

'Код формы
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim cls As New Preset
    cls.UsePreset(Me)
End Sub

'Код класса
Public Class Preset
    Public Sub UsePreset(ByVal Frm As Form)
        Frm.Controls(0).Text = "Вот ты изменил текст контролла с формы."
    End Sub
End Class

Идея понята?
С уважением,
Игорь Шувалов aka Ronin

Ronin
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 635
Зарегистрирован: 13.02.2002 (Ср) 14:16
Откуда: Россия, Москва

Сообщение Ronin » 02.11.2004 (Вт) 1:58

Доброго времени суток!

А поиск нужных контроллов можешь организовать так:

Public Class Preset
    Public Sub UsePreset(ByVal Frm As Form)
        For Each i As Control In Frm.Controls
            If CType(i.Tag, String) = "ControlNeedChage" Then
                i.Text = "Вот изменили текст нужного контролла"
            End If
        Next
    End Sub
End Class
С уважением,
Игорь Шувалов aka Ronin

DJ Dimps
Начинающий
Начинающий
 
Сообщения: 4
Зарегистрирован: 26.07.2004 (Пн) 6:37
Откуда: Зеленоград

Сообщение DJ Dimps » 02.11.2004 (Вт) 2:33

Спасибо. Сам тоже приходил к выводу, что придётся передавать указатель(?) на форму, чтобы с ней можно было работать из класса. А то тем методом, что я процитировал хоть и получаю доступ, но не к той форме, что нужна.

Сейчас буду пробовать...

2:40
Ура!!! Заработало. Большое спасибо!
Только многое до сих пор непонятно. Сейчас изучаю С++, там есть чёткое разграничение на переменные и указатели на эти переменные. Всё просто и понятно. А что творится в VB? Совсем непонятно. Нет ли где-нибудь литературы или статьи по этому поводу?

gaidar
System Debugger
System Debugger
 
Сообщения: 3152
Зарегистрирован: 23.12.2001 (Вс) 13:22

Сообщение gaidar » 02.11.2004 (Вт) 18:05

DJ Dimps писал(а):Только многое до сих пор непонятно. Сейчас изучаю С++, там есть чёткое разграничение на переменные и указатели на эти переменные. Всё просто и понятно. А что творится в VB? Совсем непонятно. Нет ли где-нибудь литературы или статьи по этому поводу?


Это здесь ни при чем. А литературы по VB.NET огромное море.
The difficult I’ll do right now. The impossible will take a little while. (c) US engineers in WWII
I don't always know what I'm talking about, but I know I'm right. (c) Muhammad Ali

hCORe
VB - Экстремал
VB - Экстремал
Аватара пользователя
 
Сообщения: 2332
Зарегистрирован: 22.02.2003 (Сб) 15:21
Откуда: parent directory

Сообщение hCORe » 03.11.2004 (Ср) 15:44

DJ Dimps писал(а):Нет ли где-нибудь литературы или статьи по этому поводу?

Нужен указатель на переменную в VB.NET - ищи по P-Invoke в MSDN. Могу сказать, что это где-то рядом с IntPtr 8)
Моду создают модоки, а распространяют модозвоны.


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

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

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

    TopList