Страница: 1 |
Страница: 1 |
Вопрос: Дочерняя форма с параметрами в MDI-приложении.
Добавлено: 04.09.06 16:24
Автор вопроса: Sergey
Открываем из родительской формы "formMDI" дочернюю форму "form1":
frm.MdiParent = Me
frm.Show()
Из "form1" открываем дочернюю форму "form2"
frm.MdiParent = Me.MdiParent
frm.Show()
Теперь из формы "form1" нужно изменить параметры x,y,z формы "form2".
Поскажите, пожалуйста, код.
Ответы
Всего ответов: 13
Номер ответа: 1
Автор ответа:
Viper
ICQ: 249094859
Вопросов: 0
Ответов: 310
Профиль | | #1
Добавлено: 05.09.06 12:13
Если под "параметрами" подразумеваются свойства или поля, то
frm.y = SomeValueOfy
frm.z = SomeValueOfz
Если автор имеет ввиду что-то иное, то стоит прояснить ситуацию
Номер ответа: 2
Автор ответа:
Sergey
Вопросов: 15
Ответов: 55
Профиль | | #2
Добавлено: 05.09.06 12:54
Параметры - это переменные.
Номер ответа: 3
Автор ответа:
Neco
ICQ: 247906854
Вопросов: 133
Ответов: 882
Web-сайт:
Профиль | | #3
Добавлено: 06.09.06 20:06
ну переменные класса, объявляешь публично (в классе) и меняешь, как указал Viper.
Номер ответа: 4
Автор ответа:
Sergey
Вопросов: 15
Ответов: 55
Профиль | | #4
Добавлено: 06.09.06 21:23
В этом случае теряет весь смысл конструкция
Один раз задал параметры и больше не моги...
Номер ответа: 5
Автор ответа:
Neco
ICQ: 247906854
Вопросов: 133
Ответов: 882
Web-сайт:
Профиль | | #5
Добавлено: 06.09.06 22:03
Так, надо по порядку.
какой смысл она теряет, эта конструкция? Ты определись, тебе надо менять значения переменных (после конструктора) или не надо.
И давай определимся с терминами. Параметры - это то, что ты передаёшь в функцию (new form2(x,y,z) - x,y,z это параметры в моём понимании).
end sub
здесь var_x,var_y,var_z - переменные функции.
это переменные класса.
Так что тебе надо поменять?
Номер ответа: 6
Автор ответа:
Sergey
Вопросов: 15
Ответов: 55
Профиль | | #6
Добавлено: 07.09.06 07:23
И в моём
По порядку:
1. Открываю форму с параметрами x, y, z.
В форме по значениям var_x, var_y, var_z нечто вычисляется.
2. Теперь из другой формы нужно задать новые значения для form2 и нечто пересчитать в ней и обновить отображение формы.
В вашем совете можно открыть форму без всяких параметров и отдельно задавать значенния публичных переменных. Вот по этому я и сказал, что смысл теряется.
Номер ответа: 7
Автор ответа:
⊗WaX⊗
Вопросов: 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
Затем вызываешь это так
frm.Show()
Без указания параметров для конструктора форма не создастся.
Если что не так пиши
Номер ответа: 8
Автор ответа:
Sergey
Вопросов: 15
Ответов: 55
Профиль | | #8
Добавлено: 07.09.06 08:59
⊗WaX⊗, я так и делаю.
Теперь в открытой форме нужно изменить Param1 и Param2 не объявляя их публичными.
Номер ответа: 9
Автор ответа:
⊗WaX⊗
Вопросов: 26
Ответов: 325
Web-сайт:
Профиль | | #9
Добавлено: 07.09.06 09:15
внутри класса 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
frm.Show()
frm.ParamOne = 4
frm.Refresh()
Номер ответа: 10
Автор ответа:
⊗WaX⊗
Вопросов: 26
Ответов: 325
Web-сайт:
Профиль | | #10
Добавлено: 07.09.06 09:16
MyForm_Validating
лишнее
Номер ответа: 11
Автор ответа:
⊗WaX⊗
Вопросов: 26
Ответов: 325
Web-сайт:
Профиль | | #11
Добавлено: 07.09.06 09:24
ткнул не туда
Номер ответа: 12
Автор ответа:
Sergey
Вопросов: 15
Ответов: 55
Профиль | | #12
Добавлено: 07.09.06 09:27
Я к этому и пришел. Только сначала нужно закрыть уже открытую форму.
Решение с Property понятно.
Спасибо!
Номер ответа: 13
Автор ответа:
⊗WaX⊗
Вопросов: 26
Ответов: 325
Web-сайт:
Профиль | | #13
Добавлено: 07.09.06 09:30
Удачи