» »

VB.net MDI in formi splošno

VB.net MDI in formi splošno

strel ::

Kar nekaj stvari se je pri VB spremnilo od VB6.

Zanima me če ima gdo kako pametno proceduro (npr: PokaziForm(FormName as "recimo" form)) , s katero bi prikazoval forme iz menija na MDI formu.

Če pa že ni kode kaka ideja

Problem je namreč v tem da zaenkrat uporabljam

Dim NewForm as new Childform 'Childform bi rad prebral iz spremenljivke

alesrosina ::

hm, dej malcek bolj podrobno opisi kaj te muci, nekak ne razumem kaj mislis z "forme iz menija" in da bi rad ChildForm prebral iz spremenljivke?

strel ::

Ok .

Mam MDI form npr MENI

Ta form je kao jedro aplikacije na njem sta recimo progressbar in statusbar spodaj ter meni na vrhu
iz tega menija kličem vse ostale forme ki so seveda MDIchildi. Tu pa seveda sedaj nastane mali problemčič ,ker sem bil navajem programiranja v VB6.

V VB6 si naredil procedura

Public sub PokaziForm(ImeForma as form)
if ImeForma.visible = False then ' pogledaš če je form že prikazan če je mu daš samo fokus
ImeForma.show
.... tu še pride kaka koda za pozicioniranje ....

else
ImeForma.setfocus
end if


Na tem MDI formu dodaš na meni klik samo call PokaziForm(recimo VnosNečesa)
in je to to

v VB.net pa form postane class ki nima takih lastnosti
in moraš reč Dim nekaspremenlijvka as new recimo VnosNNečesa

in pol moram več kode pisat za klik na vsak meniju item

Upam da sem tole kolker tolk napisal da se ve za kaj gre


Uglavnem bi mel eno proceduro ki bi jo klical s eno samo spremenlivko in to je imeforma, ker je teh formov ponavadi en mali milijon.

alesrosina ::

Hm, ce te prav razumem, bi rad naredil meni "Windows" v katerem bi imel spisek vseh odprtih mdiChildov? to ti VB.net naredi avtomaticno, v tist meni ki bi to rad ime mu nastavi property MdiList na True.

Hm, pa sej ti definiras recimo
Dim myForma as new Form1
'pol pa dostopas do vseh funkcij na to foro:
myForma.show() 'naprimer

a je to to kar bi rad imel?

strel ::

Lep pozdravčič ...


Evo kode:
ko klikneš na item iz menija (najbol osnovna sintaksa)

Private Sub MenuItem3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem3.Click

Dim newform As New VnosRacuna
NewForm.MdiParent = Me
NewForm.Show()
End Sub

Jas pa bi rad dosegel

Private Sub MenuItem3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem3.Click

call PokaziForm(ImeForma)

end sub

Bistvo je da ne znam definrat :

Dim newform as new "TO BI MORAL PREBRAT IZ SPREMENLJIVKE"

alesrosina ::

napises posebno funkcijo ki ti to klice, naprimer:
Private Function prikaziForm(ByVal imeForme As Form)
        imeForme.MdiParent = Me
        imeForme.Show()
End Function


v click eventu pa zadevo klices takole (oziroam kjerkoli):
Me.prikaziForm(new ImeForme)

a bo?

Zgodovina sprememb…

strel ::

Mislim da ne gre tako ker zateži ,pravi da je ta form type in ga ne moreš uporabiz kot expresion.

Al pa sej jst smotan spet :O

alesrosina ::

hgm? Primer simpl forme:
Public Class Form1
    Inherits System.Windows.Forms.Form

#Region " Windows Form Designer generated code "
'/......./
#End Region

    Private Function prikaziForm(ByVal imeForme As Form)
        imeForme.MdiParent = Me
        imeForme.Show()
    End Function

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Me.prikaziForm(New test2)

    End Sub
End Class


Meni dela cistzo lepo .... dej pokazi kodo, kako to izvajas? Tole more delat, ker men cist lepo dela.
Povej se ker Visual studio nucas (2002 ali 2003)?

strel ::

MAGIČNA BESEDA JE "NEW"

THNX ...

strel ::

Zaenkrat je tole kar sem hotel :

Private Sub MenuItem4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem4.Click
PokaziForm(New Nastavitve)
End Sub
Private Function PokaziForm(ByVal ImeForme As Form)
Dim Form As System.Windows.Forms.Form
For Each Form In Me.MdiChildren
If Form.Name = ImeForme.Name Then
If Form.WindowState = FormWindowState.Minimized Then Form.WindowState = FormWindowState.Normal
Form.BringToFront()
Form.Visible = True
ImeForme = Nothing
Exit Function
End If
Next
ImeForme.MdiParent = Me
ImeForme.Show()
End Function

Narobe sem klical form ( brez NEW )
Hvala za vstrajno pomoč , se še priporočam ....


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

[Visual studio .NET] Rabim pomoč

Oddelek: Programiranje
91399 (1241) darkolord
»

Enostavno tiskanje v VB.NET

Oddelek: Programiranje
52034 (1948) skorc_norc
»

VB in kk dobit Ip od račnalnika

Oddelek: Programiranje
81028 (862) alesrosina
»

API+VB

Oddelek: Programiranje
261651 (1355) webblod
»

Visual basic Progress bar

Oddelek: Programiranje
51295 (1228) Lunik

Več podobnih tem