24. maj 2005 - 19:51Der 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.
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)
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?
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..
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)
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.
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.
Synes godt om
Ny brugerNybegynder
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.