Форум программистов, компьютерный форум, киберфорум
Visual Basic .NET
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.67/15: Рейтинг темы: голосов - 15, средняя оценка - 4.67
34 / 34 / 6
Регистрация: 24.11.2015
Сообщений: 330

Как вызвать процедуру из MDI child из другой формы?

14.09.2016, 15:57. Показов 3047. Ответов 18
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет друзья.
Возникла проблема с MDI форма. Вопрос. В MDI форма есть элемент DataGridview то есть заполняется через другой форме. Когда добавлю новый запись DGV не обновляется. Хочу после добавления запись в базу форма добавления закрывалась и появились новый запись в DGV который в MDI Child форм.
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
14.09.2016, 15:57
Ответы с готовыми решениями:

как вызвать процедуру в другой процедуре
имеется процедура: Private Sub txtStepen_TextChanged(sender As Object, e As EventArgs) Handles txtNumber1.TextChanged Dim b As...

Как вызвать процедуру DataGridView1_Validating из другой процедуры?
Доброго времени суток всем участникам форума. Подскажите ответ на данный вопрос. У меня имеется DataGridView1. Для проверки корректности...

Как настроить соответствие размеров MDI-контейнера и MDI-формы?
Здравствуйте! Я для вкладки "TbpDaSubekt" сделал MDI-форму "FrmTipHran": FrmTipHran.TopLevel = False FrmTipHran.Parent =...

18
1720 / 1476 / 165
Регистрация: 25.07.2015
Сообщений: 2,579
14.09.2016, 16:07
Как у вас заполняется DGV , из базы данных или напрямую?
Если запись сначала добавляется в базу , а потом отображается в DGV , то обновляйте
datasource DGV .
Если изменение из другой формы вносятся напрямую в DGV , то обращайтесь к нему по полному пути
не DGV.Cell.... , а Form2.DGV.Cell...
Вообще не дурно было бы ваш код увидеть.
0
34 / 34 / 6
Регистрация: 24.11.2015
Сообщений: 330
14.09.2016, 18:23  [ТС]
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
Dim NewMDIChild As New Form1()
        NewMDIChild.MdiParent = Me
        NewMDIChild.Show()
 
   Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
 
        names = TextBox2.Text
        id_klass = ComboBox2.SelectedIndex + 1
        school = ComboBox1.Text
        telefon = TextBox1.Text
        email = TextBox3.Text
        operat = ComboBox4.Text
        tarif = ComboBox3.Text
        fiorad = TextBox5.Text
        adress = TextBox4.Text
        darhost = "INSERT INTO student  (name,id_klass,school,operator,telefon,tarif,fiorad,adress,email) VALUES ('" & names & "','" & id_klass & "','" & school & "','" & operat & "','" & telefon & "','" & tarif & "','" & fiorad & "','" & adress & "','" & email & "')"
        Dim cn = New System.Data.OleDb.OleDbConnection("Provider=Microsoft.jet.OLEDB.4.0; Data Source=" & Application.StartupPath & "\123.mdb")
        cn.Open()
        Dim sql As New OleDbCommand(darhost)
        Try
            sql.Connection = cn
            sql.ExecuteNonQuery()
            MsgBox("Новый ученик-'" & TextBox2.Text & "' добавлен!", MsgBoxStyle.Information, "Информация")
            Me.ActivateMdiChild(Form1.connection) здесь не работает почему????
        Catch ex As Exception
            MsgBox(ex.Message)
            MsgBox("Не удалось! ...", MsgBoxStyle.Information, "Информация")
        End Try
        cn.Close()
        Me.Close()
        ucheniki.ucheniki()
    End Sub
 Комментарий модератора 
Используйте тег VBNET для оформления кода написанного на VB.NET!


Добавлено через 2 часа 7 минут
Даже не получается вызвать функцию которые на дочерний форма NewMDIChild.
Почему так???
0
1720 / 1476 / 165
Регистрация: 25.07.2015
Сообщений: 2,579
14.09.2016, 18:53
Так у вас в представленном коде нет ни обращений к объектам (DGV) , ни вызова процедур
Есть какая то странность :
Цитата Сообщение от Khaker_tt Посмотреть сообщение
Me.ActivateMdiChild(Form1.connection) здесь не работает почему????
Что в вашем понимании здесь должно происходить ?

Добавлено через 12 минут
Для того , чтобы в gdidview появлялись внесённые значения вам надо,
как писал ранее , обновлять при открытии или активации формы с
gdidview его datasource , чтобы он загружался новыми значениями
из привязанной таблицы БД.
Но как вы обращаетесь к этой дочерней форме я , если честно , из вашего кода не понял.
0
34 / 34 / 6
Регистрация: 24.11.2015
Сообщений: 330
14.09.2016, 19:05  [ТС]
Мне надо обновить DGV которые на подчинение MdiChild.
То есть по нажатию кнопку Form2 надо обновить другую форму: на пример:
VB.NET
1
form1.conection()
но у меня form1 на подчинение MDIParent1
VB.NET
1
2
3
  Dim NewMDIChild As New Form1()
        NewMDIChild.MdiParent = Me
        NewMDIChild.Show()
не получается даже таким образом на пример:

VB.NET
1
NewMDIChild.connection()
Проблема в том что не получается обращаться к дочерниной форме

Добавлено через 6 минут
Если не получается обращаться к этой дочерниной форме как и каким способом обновляю DGV потому что он в другой форме же.
0
1720 / 1476 / 165
Регистрация: 25.07.2015
Сообщений: 2,579
14.09.2016, 19:14
Так а что такое .connection() то ???

Допустим вам надо обратиться к DGV , расположенному на Form1 :
вы просто пишите Form1.DGV
Вы из любой точки проекта можете таким образом обратиться к любому контролу
на любой форме и не важно дочерняя форма Form1 или нет.
connection - это название какого-то контрола на форме Form1 ?

Если connection -это процедура или функция , то ей присваивается модификатор Public или Friend
и вызывается просто по имени, без привязки к чему то ни было.
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4356 / 3426 / 512
Регистрация: 27.01.2014
Сообщений: 6,257
14.09.2016, 19:15
что такое form1.conection() ???
0
14.09.2016, 19:18

Не по теме:

Yury Komar, вот и я всё никак въехать не могу :D

0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4356 / 3426 / 512
Регистрация: 27.01.2014
Сообщений: 6,257
14.09.2016, 19:19
Цитата Сообщение от Kulma Посмотреть сообщение
то ей присваивается модификатор Public или Friend
и вызывается просто по имени, без привязки к чему то ни было
неее, такое прокатит, если эта процедура в модуле, если же она в классе формы, тогда нолюбому нужно указывать имя формы типа Form2.Имя_Процедуры()

Добавлено через 57 секунд

Не по теме:

Цитата Сообщение от Kulma Посмотреть сообщение
вот и я всё никак въехать не могу
не мы такие... жизнь такая... точнее ТопикСтартер )))))

0
1720 / 1476 / 165
Регистрация: 25.07.2015
Сообщений: 2,579
14.09.2016, 19:32
Цитата Сообщение от Yury Komar Посмотреть сообщение
тогда нолюбому нужно указывать имя формы
Точно, мой косяк , зарапортовался
0
34 / 34 / 6
Регистрация: 24.11.2015
Сообщений: 330
14.09.2016, 19:35  [ТС]
Не получается Form1.dgv и так далеее. Потому что Form1 на подчинение MDIParent1 .... а его имя при открытие на меняется на пример:
VB.NET
1
2
3
Dim NewMDIChild As New Form1()
NewMDIChild.MdiParent = Me
NewMDIChild.Show()
;;;;;
Даже NewMDIChild.DGV тоже не получается..

Просто проверите раз...
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4356 / 3426 / 512
Регистрация: 27.01.2014
Сообщений: 6,257
14.09.2016, 19:50
Khaker_tt, в вашем коде Form1 становится одновременно дочерней и родительской формой MDI. А так делать нельзя...

Добавлено через 1 минуту
а что вы вообще данным кодом хотели добиться то?
0
34 / 34 / 6
Регистрация: 24.11.2015
Сообщений: 330
14.09.2016, 20:27  [ТС]
Yury Komar, Есть две разные формы одно из них на подчинение MDIparent Form другой проста форма. Значит первый Form1 второй Form2. На Form1 есть Textbox и кнопка, после нажатия кнопка открывается Form2 и в этой форме есть кнопка после нажатия этой кнопке должно появится слова "Привет" на TExtBox которые находятся на Form1. А Вот все это не получается. А почему?????
Вложения
Тип файла: rar Простой пример.rar (173.9 Кб, 8 просмотров)
0
Модератор
Эксперт .NET
 Аватар для Yury Komar
4356 / 3426 / 512
Регистрация: 27.01.2014
Сообщений: 6,257
14.09.2016, 20:51
Khaker_tt, вы что издеваетесь? Что за пример на DELPHI вы скинул???????
0
34 / 34 / 6
Регистрация: 24.11.2015
Сообщений: 330
14.09.2016, 20:59  [ТС]
Yury Komar,
Прошу прошения. Извиняюсь я ошибся.
Я не тот пример скинул. Вот тот пример.
Вложения
Тип файла: rar ПримерMDIform.rar (103.9 Кб, 20 просмотров)
0
1720 / 1476 / 165
Регистрация: 25.07.2015
Сообщений: 2,579
15.09.2016, 08:40
Khaker_tt, ну так ясное дело что у вас ничего не работает толком.
Вы не открываете Form1 ,а создаёте её клон на базе класса Form1, с другим именем.
VB.NET
1
2
3
4
5
Private Sub СписокToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles СписокToolStripMenuItem.Click
        Dim NewMDIChild As New Form1()
        NewMDIChild.MdiParent = Me
        NewMDIChild.Show()
    End Sub
Но при этом пытаетесь из Form2 внести изменения в закрытую Form1.
Если вы например допишите ваш код парой строк
VB.NET
1
2
3
4
5
6
7
8
Private Sub СписокToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles СписокToolStripMenuItem.Click
        Form1.MdiParent = Me
        Form1.Show()
 
        Dim NewMDIChild As New Form1()
        NewMDIChild.MdiParent = Me
        NewMDIChild.Show()
    End Sub
то у вас откроется две формы .
Если вы нажмёте на кнопочку в Form2 , то в одной из ранее открытых форм(базовой Form1) увидите
желаемый результат.
Вы понакрутили избыточно.
Миниатюры
Как вызвать процедуру из MDI child из другой формы?   Как вызвать процедуру из MDI child из другой формы?  
1
Модератор
Эксперт .NET
 Аватар для Yury Komar
4356 / 3426 / 512
Регистрация: 27.01.2014
Сообщений: 6,257
15.09.2016, 08:49
Лучший ответ Сообщение было отмечено Khaker_tt как решение

Решение

Kulma, тут скорее всего готовый пример был и сам ТС ничего в нем не понимает...

думаю проще не создавать экземпляр фомы а показывать именно ОРИГИНАЛ формы
VB.NET
1
2
3
4
5
    Private Sub СписокToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles СписокToolStripMenuItem.Click
        Me.IsMDIContainer = True
        Form1.MdiParent = Me
        Form1.Show()
    End Sub
2
1720 / 1476 / 165
Регистрация: 25.07.2015
Сообщений: 2,579
15.09.2016, 08:51
Yury Komar, ну да.
Я просто попытался объяснить ТС , почему не работает в его варианте.
0
15.09.2016, 08:52

Не по теме:

Kulma, не трудись... Многие пытались... ))))

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.09.2016, 08:52
Помогаю со студенческими работами здесь

как вызвать процедуру из другой формы
В form2 надо вызвать процедуру procedure TForm1.RecordsClick(Sender: TObject); которая находится в form2. Как это сделать? помогите...

Как уменьшить ширину рамки формы MDI Child?
Добрый день! Возникла некоторая проблема, решить которую не получается. Есть некая форма MDI Child, мне надо чтобы заголовка...

Изменение системного меню (в заголовке окна) MDI-CHILD формы
Всем привет. Может кто-нибудь подсказать, как измененить системное меню MDI-CHILD формы. У РОДИТЕЛЯ (Parent) можно изменить через WinApi...

Как передать данные из одной формы другой, если формы вызываються через MDI форму?
Я создал MDI форму для которой добавил две toolstrip button вызывающие форму1 и форму2 внутри MDI формы. Форма1 служит для ввода данных....

Как вызвать одну процедуру в другой
нужно чтобы все работало когда открывается (макрос 2 Sub Макрос2() End Sub Sub вот() Dim x As Double Dim y As...


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

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
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
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru