Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - .NET

Страница: 1 |

 

  Вопрос: Дочерняя форма с параметрами в MDI-приложении. Добавлено: 04.09.06 16:24  

Автор вопроса:  Sergey
Открываем из родительской формы "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
Автор ответа:
 Viper



ICQ: 249094859 

Вопросов: 0
Ответов: 310
 Профиль | | #1 Добавлено: 05.09.06 12:13
Если под "параметрами" подразумеваются свойства или поля, то

frm.x = SomeValueOfx
frm.y = SomeValueOfy
frm.z = SomeValueOfz


Если автор имеет ввиду что-то иное, то стоит прояснить ситуацию

Ответить

Номер ответа: 2
Автор ответа:
 Sergey



Вопросов: 15
Ответов: 55
 Профиль | | #2 Добавлено: 05.09.06 12:54
Параметры - это переменные.

Ответить

Номер ответа: 3
Автор ответа:
 Neco



ICQ: 247906854 

Вопросов: 133
Ответов: 882
 Web-сайт: neco.pisem.net
 Профиль | | #3
Добавлено: 06.09.06 20:06
ну переменные класса, объявляешь публично (в классе) и меняешь, как указал Viper.

Ответить

Номер ответа: 4
Автор ответа:
 Sergey



Вопросов: 15
Ответов: 55
 Профиль | | #4 Добавлено: 06.09.06 21:23
ну переменные класса, объявляешь публично (в классе) и меняешь, как указал Viper.

В этом случае теряет весь смысл конструкция
            Dim frm As New form2(x,y,z)

Один раз задал параметры и больше не моги...

Ответить

Номер ответа: 5
Автор ответа:
 Neco



ICQ: 247906854 

Вопросов: 133
Ответов: 882
 Web-сайт: neco.pisem.net
 Профиль | | #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
Автор ответа:
 Sergey



Вопросов: 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
Автор ответа:
 ⊗WaX⊗



Вопросов: 26
Ответов: 325
 Web-сайт: sapfir.cift.ru
 Профиль | | #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
Автор ответа:
 Sergey



Вопросов: 15
Ответов: 55
 Профиль | | #8 Добавлено: 07.09.06 08:59
⊗WaX⊗, я так и делаю.
Теперь в открытой форме нужно изменить Param1 и Param2 не объявляя их публичными.

Ответить

Номер ответа: 9
Автор ответа:
 ⊗WaX⊗



Вопросов: 26
Ответов: 325
 Web-сайт: sapfir.cift.ru
 Профиль | | #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
Автор ответа:
 ⊗WaX⊗



Вопросов: 26
Ответов: 325
 Web-сайт: sapfir.cift.ru
 Профиль | | #10
Добавлено: 07.09.06 09:16
MyForm_Validating

лишнее

Ответить

Номер ответа: 11
Автор ответа:
 ⊗WaX⊗



Вопросов: 26
Ответов: 325
 Web-сайт: sapfir.cift.ru
 Профиль | | #11
Добавлено: 07.09.06 09:24
ткнул не туда

Ответить

Номер ответа: 12
Автор ответа:
 Sergey



Вопросов: 15
Ответов: 55
 Профиль | | #12 Добавлено: 07.09.06 09:27
Либо создай ее просто с другими параметрами.

Я к этому и пришел. Только сначала нужно закрыть уже открытую форму.
Решение с Property понятно.
Спасибо!

Ответить

Номер ответа: 13
Автор ответа:
 ⊗WaX⊗



Вопросов: 26
Ответов: 325
 Web-сайт: sapfir.cift.ru
 Профиль | | #13
Добавлено: 07.09.06 09:30
Удачи

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам