Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.53/32: Рейтинг темы: голосов - 32, средняя оценка - 4.53
 Аватар для abbat81
33 / 33 / 3
Регистрация: 20.07.2011
Сообщений: 407

Задать область видимости переменной для всех форм

28.07.2011, 01:10. Показов 6486. Ответов 32
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Как заставить проделывать работу без отображения формы.

Например есть button1 на form1
нажимаем на кнопку, переходим к другому коду. (он сейчас на form2) и как в этом случае еще перенести переменные на form2?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
28.07.2011, 01:10
Ответы с готовыми решениями:

Задать область видимости массива для всех модулей
Здравствуйте! Скажите пожалуйста: Sub zx() Dim a(10, 10) As Byte 'процедура........ End Sub В процессе работы вышеуказанной...

Переменная, область видимости для нескольких форм
Здравствуйте форумчане! Объясните, как создать переменную, на допустим 2 формы. У меня есть переменная PG, в первой форме ей задаётся...

Как задать область видимости?
Как задать область видимости для объектов в Delphi? Может есть модификаторы доступа? Мне нужно, чтобы переменная x была доступна из любой...

32
 Аватар для kOS_77
196 / 188 / 9
Регистрация: 14.06.2011
Сообщений: 495
28.07.2011, 01:33
А что значит переходим к другому коду ?

Мы нажимаем на кнопку, т.е. возникает событие "Нажатие кнопки" и вот в этом событии мы пишем то что нужно выполнить после нажатии кнопки. К примеру скрыть Form1 можно командой Me.Hide - Me потому что обращаться из формы 1 к ней же командой Form1 нельзя.

Итак, форма скрылась, после этого будет выполняться то что напишите. К примеру Form2.show т.е. показать форму 2 (если она есть конечно).

VB.NET
1
2
3
4
5
6
7
 
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1_Click
 
Me.hide
Form2.show
 
End sub
И вообще сделать переключения между формами можно оператором If (если) then(то). К примеру так

VB.NET
1
2
3
4
5
6
7
8
9
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
 
If me.hide then form2.show 
if form2.hide then me show
 
' ИЛИ ТАК
If me.hide then form2.show else me.show
 
End sub
Все в зависимости от того что вам надо, как надо и где надо
1
 Аватар для probit
70 / 63 / 1
Регистрация: 25.04.2011
Сообщений: 181
28.07.2011, 06:07
abbat81, А переменные опубликуй глобальными в новом модуле. Тупо напиши после End class такую строку:
VB.NET
1
2
3
4
5
Public module
 
Public per as integer
 
End module
И в любом классе переменную per вызывай и изменяй. Она утратится только после закрытия приложения.
Только за орфографию сомневаюсь) проги под рукой нет. Надеюсь разберёшься.
0
 Аватар для abbat81
33 / 33 / 3
Регистрация: 20.07.2011
Сообщений: 407
28.07.2011, 12:19  [ТС]
probit, Вставил под кнопкой в форме:

VB.NET
1
2
3
4
5
End Sub
End Class
Public module
    Public per As Integer
End Module
Где module - вызывает "Ошибка 1 Требуется идентификатор."

Добавлено через 17 минут
kOS_77, а как, чтобы form2 продолжила работу з переменными из form1?
0
Почетный модератор
 Аватар для Памирыч
23248 / 9160 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
28.07.2011, 12:43
VB.NET
1
2
3
Public module
    Public per As Integer
End Module
Пропробуй:
VB.NET
1
2
3
Module Module1
    Public per As Integer
End Module
1
 Аватар для abbat81
33 / 33 / 3
Регистрация: 20.07.2011
Сообщений: 407
28.07.2011, 13:00  [ТС]
VB.NET
1
2
3
4
5
6
7
8
9
Private T As String = 5
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Label2.Text = T
If dr.Read() = False Then
                Label1.Text = "44"
            Else
                                Me.Hide()
                Form2.Show()
            End If
Как на form2 подать
Label1.Text = T
Сейчас оно не отображает ничего
0
Почетный модератор
 Аватар для Памирыч
23248 / 9160 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
28.07.2011, 13:06
Цитата Сообщение от abbat81 Посмотреть сообщение
Private T As String = 5
Это шутка?
Переменная - строковая, зачем ты ей присваиваешь целочисленное значение.
Потом, нигде не видно, чтобы ты хоть как-то использовал модуль, о котором тебе писали:
VB.NET
1
2
3
Module Module1
    Public T As String = "5"
End Module
Ну а потом:
VB.NET
1
2
3
4
5
6
7
8
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Label2.Text = T
If dr.Read() = False Then
                Label1.Text = "44"
            Else
                                Me.Hide()
                Form2.Show()
            End If
0
Почетный модератор
 Аватар для Памирыч
23248 / 9160 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
28.07.2011, 13:25
VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Public Class Form1
    
 
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim da As Integer = 1
        If da = 1 Then
            Me.Hide()
            Form2.Show()
        End If
    End Sub
End Class
 
Module Module1
    Public T As Integer = 5
End Module
Это первый код. Видишь разницу?
Второй код верный
0
 Аватар для abbat81
33 / 33 / 3
Регистрация: 20.07.2011
Сообщений: 407
28.07.2011, 13:35  [ТС]
Да, спасибо.
Понял - integer.
А теперь на вторую форму переменная Т обнуляется а не держит из первой формы значение - 5

Добавлено через 6 минут
Проблема в том, что переменная в процессе получает новое значение и новое значение нужно передать на Форму2.

Напр. "ЕСЛИ да - ТОГДА вреходим на форму2 и со всеми текущими переменными":
Public Class Form1


VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim da As Integer = 1
        If da = 1 Then
            [B]Dim T As Integer = 6[/B]
            Me.Hide()
            Form2.Show()
        End If
    End Sub
End Class
 
Module Module1
    Public T As Integer = 5
End Module
0
 Аватар для probit
70 / 63 / 1
Регистрация: 25.04.2011
Сообщений: 181
28.07.2011, 13:46
abbat81, ты её заново объявляешь в области класса. вместо
VB.NET
1
Dim T As Integer = 6
поставь
VB.NET
1
T=6
Добавлено через 1 минуту
А если нужно чтоб в Frm 2 T=5, то просто убери строчку присвоения переменной T нового значения.
1
 Аватар для abbat81
33 / 33 / 3
Регистрация: 20.07.2011
Сообщений: 407
28.07.2011, 14:06  [ТС]
Спасибо большое - помогли понять.
Итого:
Ставится в конце после End Class или как вижу - перед классом можно, но за его пределами.

VB.NET
1
2
3
Module Module1
    Public T As Integer = 5
End Module
Для получения нового значения от переменной нужно не присваивать
Dim T As Integer = 6
а просто Т=6

P.S. Это я написал дял себя, чтобы не поднимать больше подобного вопроса.
Спасибо.
0
 Аватар для probit
70 / 63 / 1
Регистрация: 25.04.2011
Сообщений: 181
28.07.2011, 14:28
abbat81,
Так же ты можешь написать так:
VB.NET
1
2
3
Module Module1
    Public T As Integer 
End Module
и потом присвоить значение переменной T, где тебе заблагорассудится. Важно понять, что модулями удобно пользоваться для объявления глобальных переменных.
И ещё... строкой "Dim T As Integer = 6" мы переобъявляем переменную, то есть меняем видимость, и только потом присваиваем ей 6.
1
 Аватар для abbat81
33 / 33 / 3
Регистрация: 20.07.2011
Сообщений: 407
28.07.2011, 14:40  [ТС]
И все-таки, как запустить процесс, который в форме без отображения формы.

VB.NET
1
2
3
Private Sub Form2_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Me.Hide()
 End Sub
а вот:

VB.NET
1
2
3
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Me.Hide()
    End Sub
Прячет.
Мне просто нужно то, что у меня происходит в форме (обработка в БД) происходило невидимо.
0
 Аватар для probit
70 / 63 / 1
Регистрация: 25.04.2011
Сообщений: 181
28.07.2011, 14:46
abbat81, попробуй поставить свойство у Form2 opacity 0% , и вызывай её так
VB.NET
1
2
Form2.show
me.close
Не забудь св свойствах проекта поставить завершение приложения, когда будет закрыта последняя форма.
1
 Аватар для kOS_77
196 / 188 / 9
Регистрация: 14.06.2011
Сообщений: 495
28.07.2011, 18:28
А не проще присваивать значения чему либо и обращаться к этому "чему либо" из другой формы ?
0
Почетный модератор
 Аватар для Памирыч
23248 / 9160 / 1084
Регистрация: 11.04.2010
Сообщений: 11,014
28.07.2011, 19:06
abbat81, а какие такие "процессы" должны протекать без формы?
0
 Аватар для Ciberst
559 / 436 / 21
Регистрация: 16.12.2010
Сообщений: 953
28.07.2011, 19:21
abbat81, предлагаю тебе более качественно обдумать код, конечный итог должен быть таким - без "второй невидимой формы".
А если хочешь качественное решение, то неплохо было бы проект прикрепить.
1
 Аватар для abbat81
33 / 33 / 3
Регистрация: 20.07.2011
Сообщений: 407
28.07.2011, 21:42  [ТС]
Цитата Сообщение от Памирыч Посмотреть сообщение
abbat81, а какие такие "процессы" должны протекать без формы?
Цитата Сообщение от Ciberst Посмотреть сообщение
abbat81, неплохо было бы проект прикрепить.
Процессы и проект таковы, что уже есть написаное дело, в форме, делает запрос в базу данных, ищет совпадениЕ, если найдено, то в строке, где найдено, производит вычитание из другой спеуиальной ячейки каждую секунду. Все это происходит в форме, для проверки на лейблах отображает, все работате, а теперь как мне заставить сие без формы работать?
0
 Аватар для probit
70 / 63 / 1
Регистрация: 25.04.2011
Сообщений: 181
28.07.2011, 21:51
abbat81, просто переведи весь код из класса формы на свой личный класс.
VB.NET
1
2
3
4
5
Public class считаем
Public sub New
T = 5
End sub
End Class
Только учитывай, что в твоём классе не будет разных элементов управления(лэйбэлов, кнопок), так что не пытайся обращаться к ним.
2
 Аватар для abbat81
33 / 33 / 3
Регистрация: 20.07.2011
Сообщений: 407
29.07.2011, 00:52  [ТС]
Как вызвать этот класс?
VB.NET
1
2
3
4
5
6
7
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Form2.show ' вместо формы2 нужно запустить
        считаем.START
 
Me.Hide()
 
    End Sub
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
29.07.2011, 00:52
Помогаю со студенческими работами здесь

Область видимости переменной
создаю форму есть класс namespace WF_2 { class TS { public string name; public int age;

Область видимости переменной
Здравствуйте! Возникла проблема с видимостью переменной и поэтому написал вот такой пример: import java.awt.Button; import...

Область видимости переменной
Как я понимаю эту программу: 1)вошли в петлю while; 2) if(i), что является правдой т.к. i = 1, то единственный элемент массива...

Область видимости переменной
Привет. Скажите пожалуйста, если я объявляю новую переменную, например, внутри цикла или условия, тогда эта переменная не видна при...

Область видимости переменной
есть функция this.on("success", function(file, responseText) { var result = jQuery.parseJSON(responseText);...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru