Avatar billede hostgirl Nybegynder
24. maj 2005 - 19:51 Der er 12 kommentarer og
1 løsning

Menu med flere forms

Hej alle

Jeg har en form.vb der ser således ud:

Public Class Form1
    Inherits System.Windows.Forms.Form

    Private Sub MenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem1.Click
        Dim objAboutBox As New About
        objAboutBox.ShowDialog(Me)
    End Sub

    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        'Kode her
     
    End Sub

'Form kode her
End Class

Det virker fint og ingen problemer der. Men i toppen er der en menu, hvor der p.t. kun er en knap. Denne knap åbner en anden form kaldt about.vb  Denne .vb fil kommer frem i et "nyt vindue" eller en ny form. Hvordan kan jeg gøre så jeg i about.vb ikke behøver lave en windows form, men så den istedet åbner i den aktuelle form.vb

Hvis vi antager jeg har en menu, hvilke værdier returnere den ved klik??, så man evt kunne lave:

If menuklik_1 = "Værdi" Then

  'vis en masse kode

ElseIf menuklik_2 = "Værdi" Then

osv osv osv. Hvordan laver man dette på den bedste måde... samt kan jeg "include" andre forms, fx about.vb uden den åbnes i et nyt vindue/form.

Håber i forstår hvad jeg mener
Avatar billede burningice Nybegynder
24. maj 2005 - 23:00 #1
så skal din about-klasse laves som en Usercontrol istedet, som du så kan tilføje til din forms Control-hireaki
Avatar billede hostgirl Nybegynder
26. maj 2005 - 20:40 #2
øhm, kan du uddybe lidt, er slet ikke med... er ikke særlig erfaren indenfor vb.net
Avatar billede burningice Nybegynder
26. maj 2005 - 21:10 #3
jo... altså.. som det er nu nedarver din about-klasse fra System.Windows.Forms.Form. Det gør at klassen repræsenterer et nyt vindue når du kalder ShowDialog() på en instans af klassen.

Men det er jo ikke det du vil. Du vil istedet vise de forskellige kontroller der er i About-klassen på en eksisterende form. Det kan du gøre ved at oprette en ny klasse der nedarver fra System.Windows.Forms.UserControl istedet. På den måde kan du tilføje en instans af den nye klasse til din forms Control-hireaki

Ie.

Dim objAboutBox As New AboutUserControl
objAboutBox.Size = New Size(100, 100)
objAboutBox.Location = New Location(100, 100)

Me.Controls.Add(objAboutBox)
Avatar billede hostgirl Nybegynder
30. maj 2005 - 19:40 #4
okay, jeg prøver at lege med det, skal nok huske at lukke spørgsmålet senere :)

Læser til eksamen ligenu så må desværre lidt vente, håber det er iorden.
Avatar billede hostgirl Nybegynder
06. juni 2005 - 20:58 #5
beklager der er gået så lang tid....

Jeg har prøvet at arbejde med det, og søgt på nettet efter mere information... Jeg kan ikke gennemskue hvordan det virker, og er forholdsvis ny i faget. Hvis jeg sætter point lidt op, vil du så ikke prøve at genere et færdigt eksempel eller er det for tidskrævende? Kender du nogen sider, artikeler eller andet, så det måske kan læres?
Avatar billede hostgirl Nybegynder
08. juni 2005 - 10:28 #6
min kode ser nu således ud:

  Private Sub MenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem1.Click
        ' Dim objAboutBox As New About
        'objAboutBox.ShowDialog(Me)

        Dim objAboutBox As New AboutUserControl
        objAboutBox.Size = New Size(100, 100)
        objAboutBox.Location = New Location(100, 100)

        Me.Controls.Add(objAboutBox)
    End Sub


Men jeg mangler vel en class til AboutUserControl hvor jeg definere den? Derudover siger den også at location ikke er defineret..
Avatar billede hostgirl Nybegynder
08. juni 2005 - 19:28 #7
ingen der kan hjælpe mig lidt videre?
Avatar billede burningice Nybegynder
26. juni 2005 - 19:32 #8
det simpleste eksempel vil være

Public Class AboutUserControl
    Inherits System.Windows.Forms.UserControl

End Class


og så din funktion

Private Sub MenuItem1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MenuItem1.Click
        ' Dim objAboutBox As New About
        'objAboutBox.ShowDialog(Me)

        Dim objAboutBox As New AboutUserControl
        objAboutBox.Size = New Size(100, 100)
        objAboutBox.Location = New Location(100, 100)

        Me.Controls.Add(objAboutBox)
    End Sub
Avatar billede hostgirl Nybegynder
28. juni 2005 - 14:03 #9
jeg takker og kigger nærmere på det, Vil du ikke smide et svar, så hvis det virker får du points?
Avatar billede burningice Nybegynder
28. juni 2005 - 15:18 #10
joda :)
Avatar billede hostgirl Nybegynder
13. juli 2005 - 12:56 #11
burningice: Jeg kan desværre ikke få det til at fungere. Jeg får fejl i:

objAboutBox.Location = New Location(100, 100) 

Den siger location is not defined. Hvis jeg fjerner denne linje, sker der intet når man trykker på menu punktet :(  Hvad gør jeg forkert?
Avatar billede hostgirl Nybegynder
01. august 2005 - 11:40 #12
burninqice: Jeg har nu fundet ud af det, lidt erfaring og mere tid på vb.net hjalp mig igennem problemet. Din kode var korrekt, mig der lavede en fejl. Du giver New Location stadig fejl, men den linje kan godt undværes.

Mange tak for hjælpen.
Avatar billede burningice Nybegynder
23. august 2005 - 16:19 #13
back to civilization... :)

det var godt du fik det til at virke.. har du evt. prøvet at tjekke hvilke namespaces du får importeret. Location ligger vist i System.Drawing, så den skal i hvert fald importeres.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester