25. januar 2005 - 23:36Der er
14 kommentarer og 2 løsninger
Hvordan får man en værdi med over i en ny form?
Hej eksperter.
Jeg har en værdi, som jeg gerne skal have med over i en ny form. Et et datagrid får jeg fat i en ID, som så skal åbne en ny side/form, som viser de tilhørende værdier for det ID!
Hvordan åbner man en form, hvor man tager en værdi med fra en tidligere form?
Public Class Viskunde Inherits System.Windows.Forms.Form
#Region " Windows Form Designer generated code "
Public Sub New() MyBase.New()
'This call is required by the Windows Form Designer. InitializeComponent()
'Add any initialization after the InitializeComponent() call
End Sub
'Form overrides dispose to clean up the component list. Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) If disposing Then If Not (components Is Nothing) Then components.Dispose() End If End If MyBase.Dispose(disposing) End Sub
'Required by the Windows Form Designer Private components As System.ComponentModel.IContainer
Friend WithEvents Label1 As System.Windows.Forms.Label <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() Me.Label1 = New System.Windows.Forms.Label Me.SuspendLayout() ' 'Label1 ' Me.Label1.Location = New System.Drawing.Point(32, 16) Me.Label1.Name = "Label1" Me.Label1.Size = New System.Drawing.Size(104, 32) Me.Label1.TabIndex = 0 Me.Label1.Text = "Navn" ' 'Viskunde ' Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13) Me.ClientSize = New System.Drawing.Size(488, 273) Me.Controls.Add(Me.Label1) Me.Name = "Viskunde" Me.Text = "Viskunde" Me.ResumeLayout(False) End Sub #End Region End Class
du ved... ligesom når man laver en metode der skal modtage argumenter... en constructor er også bare en metode. Dog en lidt smart en, da man kan udnytte at den udføres når at ens object oprettes.
well... på nøjagtig samme måde som i en normal metode, så findes argumentet kun i metodens scope. Dvs at den kan kun bruges indenfor denne metode, og når metoden er færdig nedlægges variablen igen.
Denne begrænsning kan du kommer udenom ved
1) at gemme dit KundeId som et field i din klasse. På den måde kan den tilgås fra alle metoder 2) lave din constructor på denne måde
Public Sub New(ByVal KundeId As Integer) MyBase.New()
'This call is required by the Windows Form Designer. InitializeComponent()
'Add any initialization after the InitializeComponent() call Me.Label1.Text = KundeId
Hvis man grafisk genererer en label, så kan jeg ikke få lov til at bruge Me.Label1.Text = KundeId Den "kender" ikke kundeID, tiltrods for den er erklæret i konstruktøren!
Koden
Public Class Viskunde Inherits System.Windows.Forms.Form
#Region " Windows Form Designer generated code "
Public Sub New(ByVal KundeId As Integer) MyBase.New() MsgBox(KundeId)
'This call is required by the Windows Form Designer. InitializeComponent()
'Add any initialization after the InitializeComponent() call
End Sub
'Form overrides dispose to clean up the component list. Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) If disposing Then If Not (components Is Nothing) Then components.Dispose() End If End If MyBase.Dispose(disposing) End Sub
'Required by the Windows Form Designer Private components As System.ComponentModel.IContainer
Friend WithEvents Label1 As System.Windows.Forms.Label <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent() Me.Label1 = New System.Windows.Forms.Label Me.SuspendLayout() ' 'Label1 ' Me.Label1.Location = New System.Drawing.Point(32, 16) Me.Label1.Name = "Label1" Me.Label1.Size = New System.Drawing.Size(104, 32) Me.Label1.TabIndex = 0 Me.Label1.Text = "dgdg" ' 'Viskunde ' Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13) Me.ClientSize = New System.Drawing.Size(488, 273) Me.Controls.Add(Me.Label1) Me.Name = "Viskunde" Me.Text = "Viskunde" Me.ResumeLayout(False) End Sub #End Region End Class
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.