трабла с изменением свойства контрола

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

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

AnarCky
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 229
Зарегистрирован: 20.11.2006 (Пн) 20:12
Откуда: Россия, Екатеринбург.

трабла с изменением свойства контрола

Сообщение AnarCky » 02.10.2007 (Вт) 14:19

есть некий контрол у которого объявлено следующее свойство
Код: Выделить всё

    Public Property Bool() As Boolean
        Get
            Return bol
        End Get
        Set(ByVal Value As Boolean)
            bol = Value
        End Set
    End Property

по умолчанию установлено в False
bol - некоторая переменная As Boolean объявленная в классе контрола... (инициализирована как False)

из формы Form1 значение должно меняться на True следующим оператором:
c.Bool = true
но наблюдая свойства в процессе выполнения я не заметил нужной смены значения свойства и bol?
Может кто-нибудь объяснить почему?
Спасибо
Компьютеры были придуманы чтобы исправлять ошибки людей. Но кто же тогда будет исправлять ошибки компьютера?..

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

Сообщение Ramzes » 02.10.2007 (Вт) 14:33

ниче не понял :?

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 02.10.2007 (Вт) 14:39

Узрим больше кода!!!!
Весь мир матрица, а мы в нем потоки байтов!

AnarCky
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 229
Зарегистрирован: 20.11.2006 (Пн) 20:12
Откуда: Россия, Екатеринбург.

Сообщение AnarCky » 02.10.2007 (Вт) 15:34

код в классе Form1
Код: Выделить всё

     Dim c As ChemElemCell.ChemElemCell

            Select Case i
                Case 0 To 1 : tmpi = i + 6
                Case 2 To 9 : tmpi = i + 6
                Case 10 To 17 : tmpi = i + 6
                Case 18 To 27 : tmpi = i + 12
                Case 28 To 35 : tmpi = i + 4
                Case 36 To 45 : tmpi = i + 14
                Case 46 To 53 : tmpi = i + 2
                Case 54 To 63 : tmpi = i + 16
                Case 64 To 72 : tmpi = i
                Case 73 To 82 : tmpi = i + 18
                Case 83 To 96 : tmpi = i + 71 : c.Bool = True
            End Select

код в классе контрола
Код: Выделить всё

    Dim bol As Boolean

    Public Property Bool() As Boolean
        Get
            Return bol
        End Get
        Set(ByVal Value As Boolean)
            bol = Value
        End Set
    End Property

Суть проблемы: не происходит изменения свойства Bool с false (по умолчанию) на true.
Вопрос: почему и как исправить? :)
Компьютеры были придуманы чтобы исправлять ошибки людей. Но кто же тогда будет исправлять ошибки компьютера?..

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

Сообщение Ramzes » 02.10.2007 (Вт) 15:46

в представленом коде ошибок не вижу

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 02.10.2007 (Вт) 15:47

А собстно в каком месте твоего кода происходит инициализация объекта c?
Здесь
Dim c As ChemElemCell.ChemElemCell

только объявление

З.Ы. Что это вообще такое ChemElemCell.ChemElemCell? Почему два раза?
Весь мир матрица, а мы в нем потоки байтов!

AnarCky
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 229
Зарегистрирован: 20.11.2006 (Пн) 20:12
Откуда: Россия, Екатеринбург.

Сообщение AnarCky » 02.10.2007 (Вт) 15:56

2Viper
а зачем собственно инициализация? поясни плз...

объект ChemElemCell пространства имен (добавленный в решение файл .dll) ChemElemCell. так просто получилось, (давно еще) что имена одинаковые

я тоже ап-псолютно не понимаю что не так в коде. :shock:
вот при объвлении свойства...
скажите правильно я расуждаю или криво:
- свойству присваивается значение true
- это же значение присваивается переменной bol
Компьютеры были придуманы чтобы исправлять ошибки людей. Но кто же тогда будет исправлять ошибки компьютера?..

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

Сообщение Ramzes » 02.10.2007 (Вт) 16:00

напиши для пущей уверености так
а то я как-то внимания не обратил

вместо этого
Dim c As ChemElemCell.ChemElemCell
напиши
Dim c As new ChemElemCell.ChemElemCell

AnarCky
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 229
Зарегистрирован: 20.11.2006 (Пн) 20:12
Откуда: Россия, Екатеринбург.

Сообщение AnarCky » 03.10.2007 (Ср) 5:11

безрезультатно :(

Насколько я помню, в С++ инициализация - это присвоение значения в одном операторе с объявлением, т.е.
Код: Выделить всё
int a = 10;

тогда я не понимаю, разве в VB не так? как называется тогда вот такой оператор:
Код: Выделить всё
Dim i As Integer = 10

и почему тогда вы называете инициализацией эту строку:
Код: Выделить всё
Dim c As New ChemElemCell.ChemElemCell
Компьютеры были придуманы чтобы исправлять ошибки людей. Но кто же тогда будет исправлять ошибки компьютера?..

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 03.10.2007 (Ср) 7:03

AnarCky, а является ли ChemElemCell классом?
Весь мир матрица, а мы в нем потоки байтов!

Хакер
Телепат
Телепат
Аватара пользователя
 
Сообщения: 16478
Зарегистрирован: 13.11.2005 (Вс) 2:43
Откуда: Казахстан, Петропавловск

Сообщение Хакер » 03.10.2007 (Ср) 7:16

AnarCky писал(а):Насколько я помню, в С++ инициализация - это присвоение значения в одном операторе с объявлением, т.е.
Код: Выделить всё
int a = 10;
тогда я не понимаю, разве в VB не так? как называется тогда вот такой оператор:
Код: Выделить всё
Dim i As Integer = 10
и почему тогда вы называете инициализацией эту строку:
Код: Выделить всё
Dim c As New ChemElemCell.ChemElemCell


AnarCky, то что ты называешь оператором лучше (правильнее, с точки зрения VB) называть инструкцией (statement).

Почему называем эту строчку инициализацией?
Код: Выделить всё
Dim abc As Integer
abc = 123
'Можно записать так:
Dim abc As Integer = 123    ' "Инициализация" ?

'________________________

Dim abc as SomeClass
abc = New SomeClass()
' можно _было бы_ записать так:
Dim abc As SomeСlass = New SomeClass()
' Но чтобы не писать лишнее, сделали более сокращённую запись:
Dim abc As New SomeClass


Надеюсь я ничего не напутал с .net-овским синтаксисом.
—We separate their smiling faces from the rest of their body, Captain.
—That's right! We decapitate them.

AnarCky
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 229
Зарегистрирован: 20.11.2006 (Пн) 20:12
Откуда: Россия, Екатеринбург.

Сообщение AnarCky » 03.10.2007 (Ср) 13:58

Viper
Э-э... если я все правильно понимаю, то да. Ну вот по крайней мере заголовок (там же написано Public class):
Код: Выделить всё

Public Class ChemElemCell
    Inherits System.Windows.Forms.UserControl

End Class


Хакер
Спасибо!!!! :D Теперь я понял
Компьютеры были придуманы чтобы исправлять ошибки людей. Но кто же тогда будет исправлять ошибки компьютера?..

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 03.10.2007 (Ср) 15:17

AnarCky, таки просветление то наступило? Или непонятности продолжают жить?
Весь мир матрица, а мы в нем потоки байтов!

AnarCky
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 229
Зарегистрирован: 20.11.2006 (Пн) 20:12
Откуда: Россия, Екатеринбург.

Сообщение AnarCky » 03.10.2007 (Ср) 15:25

Не-а :? полагаешь, что уже должно? "Непонятности" живут... Я до сих пор не понимаю причин... Если не затруднит - растолкуй мне все таки где собака зарыта :D
Спасибо!
Компьютеры были придуманы чтобы исправлять ошибки людей. Но кто же тогда будет исправлять ошибки компьютера?..

Viper
Артефакт VBStreets
Артефакт VBStreets
Аватара пользователя
 
Сообщения: 4394
Зарегистрирован: 12.04.2005 (Вт) 17:50
Откуда: Н.Новгород

Сообщение Viper » 03.10.2007 (Ср) 15:36

Дык вот и вот.

Т.е. у тебя объект класса не инициализируется и непонятно почему код вообще работает. По идее должна была вылезти ошибка компиляции. Если ее нет, то что-то из кода ты сюда не донес.
Весь мир матрица, а мы в нем потоки байтов!

AnarCky
Бывалый
Бывалый
Аватара пользователя
 
Сообщения: 229
Зарегистрирован: 20.11.2006 (Пн) 20:12
Откуда: Россия, Екатеринбург.

Сообщение AnarCky » 04.10.2007 (Чт) 15:53

Уже решил проблему другим путем :)
Спасибо всем за помощь!
Компьютеры были придуманы чтобы исправлять ошибки людей. Но кто же тогда будет исправлять ошибки компьютера?..


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

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

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

    TopList