29. marts 2005 - 15:49Der er
12 kommentarer og 1 løsning
Index-variabel til komponent
I de gode gamle dage med almindelig VB kunne man knytte en index-variabel til en komponent, fx en knap, så de alle hed det samme, men havde forskellige numre. På den måde kunne de referere til samme event-metodekald. Kan man gøre det samme, eller noget lignende idag? Hvordan?
Imports System Imports System.Drawing Imports System.Windows.Forms
Namespace DefaultNamespace Public Class MainForm Inherits System.Windows.Forms.Form Private checkBoxAll(4) As CheckBox Private button1 As Button Private button2 As Button
Public Shared Sub Main Dim fMainForm As New MainForm fMainForm.ShowDialog() End Sub
Public Sub New() MyBase.New InitializeComponent End Sub
Private Sub InitializeComponent() Dim i As Integer For i = 0 To 3 checkBoxAll(i) = New CheckBox Next button1 = New Button button2 = New Button SuspendLayout For i = 0 To 3 checkBoxAll(i).Location = New Point(50, 50 + i * 50) checkBoxAll(i).Size = New Size(100, 25) checkBoxAll(i).Text = "Valg " & (i + 1) Next button1.Location = New Point(200, 100) button1.Size = New Size(50, 25) button1.Text = "Set" AddHandler button1.Click, AddressOf Button1Click button2.Location = New Point(200, 150) button2.Size = New Size(50, 25) button2.Text = "Clear" AddHandler button2.Click, AddressOf Button2Click ClientSize = New Size(300, 250) For i = 0 To 3 Controls.Add(checkBoxAll(i)) Next Controls.Add(button1) Controls.Add(button2) Name = "Main Form" Text = "Main Form" ResumeLayout(False) End Sub
Private Sub Button1Click(sender As System.Object, e As System.EventArgs) Dim i As Integer For i = 0 To 3 checkBoxAll(i).Checked = True Next End Sub
Private Sub Button2Click(sender As System.Object, e As System.EventArgs) Dim i As Integer For i = 0 To 3 checkBoxAll(i).Checked = False Next End Sub End Class End Namespace
ah... men jeg er forvirret. Nu har jeg forsøgt at gå en anden vej:
-----------------
Private Sub lblChosen_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles lblChosen0.Click, lblChosen1.Click, lblChosen2.Click, lblChosen3.Click, lblChosen4.Click, lblChosen5.Click, lblChosen6.Click, lblChosen7.Click, lblChosen8.Click, lblChosen9.Click OpenFileDlg.ShowDialog() sender.Text = OpenFileDlg.FileName End Sub
------------
Efterfølgende vil jeg gerne undersøge sender-objektet (eller event-objektet), idet jeg skal finde afsenderens navn for at vide, hvem der rendt faktisk fyrede event'en.
Den eneste metode jeg imidlertid kan kalde på objekterne er getType, hvilket er en blindgyde, da jeg så får returneret en collection af alle objekter af den konkrete type...
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.