Страница: 1 |
Вопрос: Дочерняя форма с параметрами в MDI-приложении. | Добавлено: 04.09.06 16:24 |
Автор вопроса: ![]() |
Открываем из родительской формы "formMDI" дочернюю форму "form1":
Dim frm As New form1()
frm.MdiParent = Me frm.Show() Из "form1" открываем дочернюю форму "form2" Dim frm As New form2(x,y,z)
frm.MdiParent = Me.MdiParent frm.Show() Теперь из формы "form1" нужно изменить параметры x,y,z формы "form2". Поскажите, пожалуйста, код. |
Ответы | Всего ответов: 13 |
Номер ответа: 1 Автор ответа: ![]() ![]() ![]() ![]() ICQ: 249094859 Вопросов: 0 Ответов: 310 |
Профиль | Цитата | #1 | Добавлено: 05.09.06 12:13 |
Если под "параметрами" подразумеваются свойства или поля, то
frm.x = SomeValueOfx
frm.y = SomeValueOfy frm.z = SomeValueOfz Если автор имеет ввиду что-то иное, то стоит прояснить ситуацию |
Номер ответа: 2 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 15 Ответов: 55 |
Профиль | Цитата | #2 | Добавлено: 05.09.06 12:54 |
Параметры - это переменные. |
Номер ответа: 3 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 247906854 Вопросов: 133 Ответов: 882 |
Web-сайт: Профиль | Цитата | #3 | Добавлено: 06.09.06 20:06 |
ну переменные класса, объявляешь публично (в классе) и меняешь, как указал Viper. |
Номер ответа: 4 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 15 Ответов: 55 |
Профиль | Цитата | #4 | Добавлено: 06.09.06 21:23 |
ну переменные класса, объявляешь публично (в классе) и меняешь, как указал Viper.
В этом случае теряет весь смысл конструкция Dim frm As New form2(x,y,z)
Один раз задал параметры и больше не моги... |
Номер ответа: 5 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ICQ: 247906854 Вопросов: 133 Ответов: 882 |
Web-сайт: Профиль | Цитата | #5 | Добавлено: 06.09.06 22:03 |
Так, надо по порядку.
какой смысл она теряет, эта конструкция? Ты определись, тебе надо менять значения переменных (после конструктора) или не надо. И давай определимся с терминами. Параметры - это то, что ты передаёшь в функцию (new form2(x,y,z) - x,y,z это параметры в моём понимании). private sub New(var_x as integer,var_y as integer,var_z as integer)
end sub здесь var_x,var_y,var_z - переменные функции. dim/public m_x,m_y,m_z as integer
это переменные класса. Так что тебе надо поменять? |
Номер ответа: 6 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 15 Ответов: 55 |
Профиль | Цитата | #6 | Добавлено: 07.09.06 07:23 |
И давай определимся с терминами. Параметры - это то, что ты передаёшь в функцию (new form2(x,y,z) - x,y,z это параметры в моём понимании).
И в моём ![]() Так, надо по порядку.
По порядку: 1. Открываю форму с параметрами x, y, z. В форме по значениям var_x, var_y, var_z нечто вычисляется. 2. Теперь из другой формы нужно задать новые значения для form2 и нечто пересчитать в ней и обновить отображение формы. В вашем совете можно открыть форму без всяких параметров и отдельно задавать значенния публичных переменных. Вот по этому я и сказал, что смысл теряется. |
Номер ответа: 7 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 26 Ответов: 325 |
Web-сайт: Профиль | Цитата | #7 | Добавлено: 07.09.06 08:12 |
Ну можно же при создании формы определить, что парметры не заданы и обругаться.
Я конечно до конца не понял что тебе надо но вот например так 1. Добавляешь в проект новый класс в нем пишешь Imports System.Windows.Forms Imports System.Text Public Class myForm Inherits Form Public Sub New(ByVal message As String, ByVal title As String) MessageBox.Show(message, title) End Sub End Class Затем вызываешь это так Dim frm As New myForm("Param1", "Param2"
![]() frm.Show() Без указания параметров для конструктора форма не создастся. Если что не так пиши |
Номер ответа: 8 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 15 Ответов: 55 |
Профиль | Цитата | #8 | Добавлено: 07.09.06 08:59 |
⊗WaX⊗, я так и делаю.
Теперь в открытой форме нужно изменить Param1 и Param2 не объявляя их публичными. |
Номер ответа: 9 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 26 Ответов: 325 |
Web-сайт: Профиль | Цитата | #9 | Добавлено: 07.09.06 09:15 |
внутри класса myForm Пожалуйста меняй кто тебе не дает.
Либо создай ее просто с другими параметрами. Вот еще так можно Public Class MyForm
Inherits Form Private _param1 As Integer Private _param2 As Integer Friend WriteOnly Property ParamOne() Set(ByVal value) _param1 = value End Set End Property Protected WriteOnly Property ParamTwo() Set(ByVal value) _param2 = value End Set End Property Public Sub New(ByVal p1 As Integer, ByVal p2 As Integer) _param1 = p1 _param2 = p2 End Sub Private Sub MyForm_Invalidated(ByVal sender As Object, ByVal e As System.Windows.Forms.InvalidateEventArgs) Handles Me.Invalidated Me.Text = _param1 & " " & _param2 End Sub Private Sub MyForm_Validating(ByVal sender As Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles Me.Validating Me.Text = _param1 & " " & _param2 End Sub End Class Dim frm As New MyForm(1, 2)
frm.Show() frm.ParamOne = 4 frm.Refresh() |
Номер ответа: 10 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 26 Ответов: 325 |
Web-сайт: Профиль | Цитата | #10 | Добавлено: 07.09.06 09:16 |
MyForm_Validating
лишнее |
Номер ответа: 11 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 26 Ответов: 325 |
Web-сайт: Профиль | Цитата | #11 | Добавлено: 07.09.06 09:24 |
ткнул не туда |
Номер ответа: 12 Автор ответа: ![]() ![]() ![]() ![]() ![]() ![]() ![]() Вопросов: 15 Ответов: 55 |
Профиль | Цитата | #12 | Добавлено: 07.09.06 09:27 |
Либо создай ее просто с другими параметрами.
Я к этому и пришел. Только сначала нужно закрыть уже открытую форму. Решение с Property понятно. Спасибо! |
Номер ответа: 13 Автор ответа: ![]() ![]() ![]() ![]() Вопросов: 26 Ответов: 325 |
Web-сайт: Профиль | Цитата | #13 | Добавлено: 07.09.06 09:30 |
Удачи |
Страница: 1 |
|