Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Upravljanje formama [VB.NET]

[es] :: .NET :: .NET Desktop razvoj :: Upravljanje formama [VB.NET]

[ Pregleda: 3959 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Mare_Bogovadja
Marko Matic
Bogovadja

Član broj: 22223
Poruke: 70
*.dial.InfoSky.Net



Profil

icon Upravljanje formama [VB.NET]23.06.2004. u 15:52 - pre 241 meseci
[Visual Basic]

Uzimam prost primer;

Najpre se ucitava forma1, a iz nje forma2 [kasnije, u toku rada]
Kako da napravim da kontrole koje zadam na formi2 uticu na formu1?

Interesuju me 2 slucaja

1. Treba mi neka vrsta [Options...] menija sa [Apply] dugmetom gde bi se promene odmah izvrsile (ne cekajuci neki Mouse Enter ili sl. event). Kako?

2. Kako da sa neke forme zatvorim proizvoljnu formu u istoj aplikaciji?

Hvala svima!
"None may challenge the Brotherhood!"
Edwin VanCleef <Defias Kingpin>
 
Odgovor na temu

ZokiR
Zoran Radojković
Melburn, Australija

Član broj: 15986
Poruke: 109
*.nexnet.net.au



Profil

icon Re: Upravljanje formama [VB.NET]24.06.2004. u 06:06 - pre 241 meseci
Zavisi od toga na šta konkretno misliš pod „uticanjem” na drugu formu... iz metoda jedne forme možeš pozivati metode na drugoj formi (ukolko njihov nivo zaštite to dozvoljava, na primer ako su definisane kao public), menjati vrednosti propertija itd. Naravno, formi iz koje to radiš moraš prethodno da proslediš referencu na drugu formu. Ako bi, na primer, želeo da sa jedne forme otvoriš drugu, u kojoj kliktanjem na dugme menjaš boju pozadine prve forme, to bi izgledalo ovako nekako:
Code:
Public Class FirstForm
    Inherits Form

...

    Private Sub OpenSecondFormButton_Click(ByVal sender As Object, ByVal e As EventArgs) Handles OpenSecondFormButton.Click
        ' Ovde prosleđujemo referencu forme kroz konstruktor
        Dim secondForm As New SecondForm(Me)
        secondForm.Show()
    End Sub
End Class

...

Public Class SecondForm
    Inherits Form

    Private otherForm As Form

    ' Konstruktor prihvata refencu prve forme
    Public Sub New(ByVal otherForm As Form)
        MyBase.New()
        Me.otherForm = otherForm
        InitializeComponent()
    End Sub

    ...

    Private Sub ChangeOtherFormColourButton_Click(ByVal sender As Object, ByVal e As EventArgs) Handles ChangeOtherFormColourButton.Click
        Me.otherForm.BackColor = Color.Blue
    End Sub
End Class

Što se tiče zatvaranja, opet moraš znati referencu, i onda samo pozoveš Close metodu te forme.
 
Odgovor na temu

Mare_Bogovadja
Marko Matic
Bogovadja

Član broj: 22223
Poruke: 70
*.InfoSky.Net



Profil

icon Re: Upravljanje formama [VB.NET]24.06.2004. u 21:36 - pre 241 meseci
Najpre hvala na trudu.

Ovo sto si napisao sam probao i radi.

E, sad interesuje me da li svaki objekat na prvoj formi [kod tebe "otherForm"] moram da referenciram posebno jer se ne pojavljuju u listi dostupnih mogucnosti kad otkucam "Me.otherForm."
Otprilike da su ovako referencirane samo svojstva i metode same forme, bez ikakvih elemenata [kontrola] na njoj.

Pokusao sam nesto ovako [u drugoj formi]:

[ovo ide u click]
Me.otherForm.TextBox1.Text = "bla-bla..."

Izadje poruka koja kaze da Textbox1 nije clan .....Windows.Forms sto smo i pretpostavljali, ali i dalje imam problem.Dakle da li moram da referenciram sve [i kako]?

P.S.Metoda close radi jer je metod forme.
"None may challenge the Brotherhood!"
Edwin VanCleef <Defias Kingpin>
 
Odgovor na temu

veljaradenkovic
Velja Radenkovic
Beograd

Član broj: 2977
Poruke: 281
*.ptt.yu

ICQ: 147120023


Profil

icon Re: Upravljanje formama [VB.NET]25.06.2004. u 00:21 - pre 241 meseci
Prvo, prosledjivanje ovnera u konstruktoru je stara dobra tehnika al ja to ovde ne bih radio.

Mislim da je svrsishodnije recimo napraviti event u child formi
Code:
Public event setovanjaIzmenjena


Pa u trenutku kad su setovanja izmenjena dignuti taj dogadjaj.

Moze recimo da se napravi I klasa nasledjena od EventArgs i njena polja da se popune setovanjima, pa da se prosledjuju metodi eventa.

Ovo ispod nevalja:
Code:
Me.otherForm.TextBox1.Text = "bla-bla..."


Ne treba tko da radis da (da pristupas clanovim ove klase direktno nego treba da napravis public metode - mutatore koje ce da sadrze definiciju kad, koje i kako se polje menja)



 
Odgovor na temu

veljaradenkovic
Velja Radenkovic
Beograd

Član broj: 2977
Poruke: 281
*.ptt.yu

ICQ: 147120023


Profil

icon Re: Upravljanje formama [VB.NET]25.06.2004. u 00:25 - pre 241 meseci
Javi mi na pp kad procitas, probas tj kad ti vise nije potrebno da obrisem suvisan deo.

Evo probaj ovo:
Code:

'
'Glavna forma
'
Public Class Form1
    Inherits System.Windows.Forms.Form

#Region " Windows Form Designer generated code "
 ...
#End Region
    '
    'private
    '
    Private WithEvents opt As New Opcije
   

    Private Sub setOpts(ByVal text1 As String, ByVal text2 As String)
        Me.TextBox1.Text = text1
        Me.TextBox2.Text = text2
    End Sub

    Private Sub opt_setovanjaIzmenjena(ByRef args As SettovanjaIzmenjenaEventArgs) Handles opt.setovanjaIzmenjena
        setOpts(args.TextBox1Text, args.TextBox2Text)
    End Sub

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        opt.Show()
    End Sub
End Class
'
'Forma opcije
'
Public Class Opcije
    Inherits System.Windows.Forms.Form

#Region " Windows Form Designer generated code "
...
#End Region
    Public Event setovanjaIzmenjena(ByRef args As SettovanjaIzmenjenaEventArgs)
    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim setovanjaArgs As New SettovanjaIzmenjenaEventArgs
        setovanjaArgs.TextBox1Text = Me.TextBox1.Text
        setovanjaArgs.TextBox2Text = Me.TextBox2.Text
        RaiseEvent setovanjaIzmenjena(setovanjaArgs)
    End Sub
End Class
'
'Event argumenti
'
Public Class SettovanjaIzmenjenaEventArgs
    Inherits System.EventArgs
    '
    'private fields
    '
    Private text1 As String
    Private text2 As String
    '
    'props
    '
    Public Property TextBox1Text() As String
        Get
            Return text1
        End Get
        Set(ByVal Value as String)
            text1 = Value
        End Set
    End Property
    Public Property TextBox2Text() As String
        Get
            Return text2
        End Get
        Set(ByVal Value As String)
            text2 = Value
        End Set
    End Property
    '
    'constructor
    '
    Public Sub New()

    End Sub
End Class


Zao mi je zbog notacije al stvarno ne mogu da se snadjem u VB.

[Ovu poruku je menjao veljaradenkovic dana 26.06.2004. u 23:15 GMT]
 
Odgovor na temu

ventura

Član broj: 32
Poruke: 7781
*.bg.wifi.vline.verat.net



+6455 Profil

icon Re: Upravljanje formama [VB.NET]25.06.2004. u 00:45 - pre 241 meseci
Ja sam se danas patio sa tim pola sata, i na kraju sam zavrsio tako sto sam rezultat kopirao u labele velicine 1pixel X 1pixel, i onda odatle izvlacio vrednosti za drugi form ...

Nisam uopste mogao da nadjem kako se varijabla pravi public (iliti global), tako da cu pogledati malo ovaj source....
 
Odgovor na temu

Mare_Bogovadja
Marko Matic
Bogovadja

Član broj: 22223
Poruke: 70
*.dial.InfoSky.Net



Profil

icon Re: Upravljanje formama [VB.NET]27.06.2004. u 00:55 - pre 241 meseci
Hvala svima na odgovorima, mnogo su pomogli.

Uradio sam sta je trebalo pomocu obe metode tako da je to OK.

Interesuje me jedna stvar u vezi sa ovim source-om, da li moramo sami praviti klasu ili mozemo koristiti neku postojecu? Ovako sam ovo resio na kraci nacin [ne kazem da je i bolji]

Prva forma [polazna]
Code:

Public Class Form1
    Inherits System.Windows.Forms.Form

#Region " Windows Form Designer generated code "

    
#End Region

    Dim WithEvents c As New Form2
'.................................................................................................
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        c.Show()

    End Sub
'..................................................................................................
    Private Sub c_a(ByVal s As String) Handles c.a

        Me.TextBox1.Text = s

    End Sub

End Class


Druga forma [opcije]

Code:

Public Class Form2
    Inherits System.Windows.Forms.Form

#Region " Windows Form Designer generated code "


#End Region
'........................................................................................
    Public Shared Event a(ByVal s As String)
'.........................................................................................
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim s As String
        s = Me.TextBox1.Text
        RaiseEvent a(s)

    End Sub

End Class


Po meni kljucna stvar je "RaiseEvent" jer ja mogu vrednosti dodeliti promenljivama u npr. modulu i samo ih dodeliti u polaznoj formi koristeci pokrenuti dogadjaj [pokrece ga recimo dugme Apply na drugoj formi]

Pozdrav
"None may challenge the Brotherhood!"
Edwin VanCleef <Defias Kingpin>
 
Odgovor na temu

veljaradenkovic
Velja Radenkovic
Beograd

Član broj: 2977
Poruke: 281
*.ptt.yu

ICQ: 147120023


Profil

icon Re: Upravljanje formama [VB.NET]27.06.2004. u 01:30 - pre 241 meseci
Pa uzmes dokumentaciju vidis da li postoji neka klasa koja ti odgovara ko sto si sad upotrebio String Object. Ako nema vidis koja ti najvise odgovara pa je prosiris.

Ako ti ne treba nista od funkcionalnosti postojecih klasa iz frameworka. Napises sam.



Ok je ovo ispod to je to. Naravno da je bolji jer ako ti treba jedan string normalno da neces da pravis klasu sa jednim poljem.

I ako ti treba vise stringova ne moras da je pravis mozes da iskoristis array ili neku od postojecih kolekcija.

Al zamisli da su tvoje opcije opcije nekog softvera pa da u njima imas da izaberes poziciju prozora, boju pozadine, itd. tipicna situacija za Klasu WindowSettings koju bi posle mogao da serijalizujes na disk i tako zapamtis setovanja.

Cisto ti golicam mastu.
 
Odgovor na temu

[es] :: .NET :: .NET Desktop razvoj :: Upravljanje formama [VB.NET]

[ Pregleda: 3959 | Odgovora: 7 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.