Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/8: Рейтинг темы: голосов - 8, средняя оценка - 4.88
646 / 474 / 39
Регистрация: 04.11.2013
Сообщений: 1,951

Изменение и запоминание значения TrackBar при выборе одной из RadioButton

18.01.2014, 00:57. Показов 1689. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени!
На форме 2 радиокнопки и 1 тракбар.
Смысл: При выборе одной из радиокнопок меняется значение переменной i (0 или 1). При изменении значения переменной i TrackBar.Value меняется на значение, сохраненное в коллекции в элементе с соответствующим номером. При изменении значения TrackBar автоматически сохраняет измененное значение в коллекцию в элемент под номером i. (Короче, просто переключатель между двумя значениями с возможностью эти два значения менять)

Написал вот такой код:
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
Public Class Form1
    '' Объявляем переменную i и коллекцию ParamCollection
    Dim WithEvents i As New MyVariable(Of Integer)
    Dim ParamCollection As New List(Of Param)
 
    '' Задаем вид элемента коллекции
    Public Class Param
        Dim Vertical As Double
        Property MyVertical() As Double
            Get
                Return Vertical
            End Get
            Set(ByVal value As Double)
                Vertical = value
            End Set
        End Property
    End Class
 
    '' При загрузке формы создаем коллекцию с пустыми параметрами
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Dim P As New Param
        P.MyVertical = 0
        For g = 0 To 1
            ParamCollection.Add(P)
        Next
    End Sub
 
    '' при выборе радиокнопки меняем значение i (0 или 1)
    Private Sub RadioButton1_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton1.CheckedChanged
        Me.i.Value = 0
    End Sub
    Private Sub RadioButton2_CheckedChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles RadioButton2.CheckedChanged
        Me.i.Value = 1
    End Sub
 
    '' При изменении значения i меняем значение TrackBar1 на значение из коллекции с соответствующим индексом
    Private Sub i_OnChange(ByVal sender As Object, ByVal e As System.EventArgs) Handles i.OnChange
        TrackBar1.Value = ParamCollection.Item(i.Value).MyVertical
    End Sub
 
    '' При изменении значения TrackBar записываем в коллекцию с соответствующим индексом
    Private Sub TrackBar1_changed(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles TrackBar1.ValueChanged
        ParamCollection.Item(i.Value).MyVertical = TrackBar1.Value
    End Sub
End Class
 
'' Класс для отслеживания изменения переменной i. Взят с форума. Работает.
Friend Class MyVariable(Of T)
    Private pvalue As T
    Friend Event OnChange(ByVal sender As Object, ByVal e As System.EventArgs)
    Friend Property Value() As T
        Get
            Return pvalue
        End Get
        Set(ByVal value As T)
            If Not pvalue.Equals(value) Then
                pvalue = value
                RaiseEvent OnChange(Me, New System.EventArgs)
            End If
        End Set
    End Property
End Class
Не работает. Переменная i меняется, изменение ее значения отслеживается и обрабатывается, изменение значения тракбара отслеживается и записывается. Тем не менее - щелкаешь по радиокнопкам, а значения тракбара не меняется. В чем загвоздка?

Переменную i и коллекцию надо сохранить в том виде, в котором они есть.

Добавлено через 8 часов 17 минут
П.С. Вопрос пока снят - организованно было не очень удобно, переорганизую (или переорганизовываю?).
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.01.2014, 00:57
Ответы с готовыми решениями:

Динамическое изменение размера панели при выборе значения с помощью RadioButton
Здравствуйте! Подскажите плз как реализовать динамическое изменение размера панели, по нажати. на рдиобаттон. Вот как выглядит...

Изменение видимости TextBox при выборе CheckBox или RadioButton
Всем привет. Нужно сделать так: если выбран чек бокс (или Р.Б) то текст бокс становился видимым, а если нет - ставал не видимым. Знаю...

Изменение данных одной колонки ТЧ при выборе другой
Всем привет! Управляемые формы. Есть задача: в табличной части на форме 2 колонки. В одной путь к данным ДокументЗаявкаНаОтгрузку, а в...

1
 Аватар для ViterAlex
8951 / 4863 / 1886
Регистрация: 11.02.2013
Сообщений: 10,246
18.01.2014, 10:25
Лучший ответ Сообщение было отмечено как решение

Решение

Ну и накручено! События, коллекции. Для хранения старого значения можно использовать свойство Tag. Зачем радиокнопки, если всего два значения возможны? Мне кажется, тут будет уместнее флажок (чекбокс), да и логика работы проще, потому у радиокнопок при изменении их состояния "выстреливать" будут два события: одно у той кнопки, по которой кликнули, а второе у той, которая была отмечена до этого. Поэтому лучше использовать флажок:
VB.NET
1
2
3
4
5
6
    Private Sub CheckBox1_CheckedChanged(sender As Object, e As EventArgs) Handles CheckBox1.CheckedChanged
        Dim temp As Integer = TrackBar1.Value
        TrackBar1.Value = CInt(TrackBar1.Tag)
        TrackBar1.Tag = temp
        CheckBox1.Text = IIf(CheckBox1.Checked, "Первое значение", "Второе значение").ToString()
    End Sub
3
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
18.01.2014, 10:25
Помогаю со студенческими работами здесь

Изменение label при выборе значения в select
Сабж. Дана форма на ней находится select, нужно, чтобы при выборе значения в select значение label изменялось. Как это сделать ?

Автоматическое изменение количества в одной таблице при выборе позиции из другой таблицы
Добрый день, уважаемые! Помогите советом, подсказкой:gconfusion: Штука такая. Есть первая таблица "Продукция" с...

Изменение значения textbox при выборе определенной строки combobox
Всем привет. Прошу помощи у более знающих, может кто сталкивался. Есть таблица sprvidzaloga в ней поля kod, title, sumocen,procent....

Автоматическое изменение значений полей при Выборе значения в поле со списком
При выборе поля типа "поле со списком", следующее поле тип "поле" установить значение из таблицы. С примера: мне нужно в таблице при...

Автоматическое изменение значений полей при Выборе значения в поле со списком из связанных таблиц
Добрый день, бьюсь над проблемкой и не знаю как ее решить: Имеется несколько связанных таблиц, их схема прилагается. Не могу реализовать...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru