Avatar billede shadowdance Nybegynder
29. marts 2005 - 15:49 Der 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?
Avatar billede arne_v Ekspert
29. marts 2005 - 16:17 #1
Du kan lave et array af komponenter.

Ikke helt det samme, men lidt derhen af
Avatar billede shadowdance Nybegynder
29. marts 2005 - 19:48 #2
Og hvordan gøres det så?
Avatar billede arne_v Ekspert
29. marts 2005 - 19:51 #3
Det kan gøres på mange måder.

Men det eksemple kan give nogle ideer:

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
Avatar billede burningice Nybegynder
29. marts 2005 - 20:24 #4
shadowdance>> mon ikke det er det her du tænker på??

Button btn1 = new Button();
btn1.Text = "hej1";
btn1.Click += new EventHandler(btn_Click);

Button btn2 = new Button();
btn2.Text = "hej2";
btn2.Click += new EventHandler(btn_Click);

Button btn3 = new Button();
btn3.Text = "hej3";
btn3.Click += new EventHandler(btn_Click);

void btn_Click(object sender, EventArgs e) {
    Button btn = (Button)sender;

    MessageBox.Show("Der blev klikket på "+ btn.Text);
}
Avatar billede burningice Nybegynder
29. marts 2005 - 20:24 #5
det er i hvert fald tilsvarende funktionalitet i .net, som der var i vb6
Avatar billede shadowdance Nybegynder
29. marts 2005 - 21:25 #6
cyberfessor >>> Men du udtrykker det i Java-kode???
Avatar billede arne_v Ekspert
29. marts 2005 - 21:27 #7
ikke Java
C#
Avatar billede shadowdance Nybegynder
29. marts 2005 - 21:59 #8
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...

hvad gør jeg så?
Avatar billede shadowdance Nybegynder
29. marts 2005 - 22:00 #9
ah... jeg fandt ud af det. Alle metoderne er jo tilgængelige, men bare ikke synlige...
Avatar billede arne_v Ekspert
29. marts 2005 - 22:01 #10
Prøv og CType den over i f.eks. Control
Avatar billede arne_v Ekspert
26. april 2005 - 00:35 #11
shadowdance>

kommet videre ?
Avatar billede shadowdance Nybegynder
19. juli 2006 - 14:22 #12
Hej Arne... rydder lige op i glemte ting... post lige et svar, det var dine råd der hjalp...
Avatar billede arne_v Ekspert
19. juli 2006 - 16:51 #13
ok
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



IT-JOB

Udviklings- og Forenklingsstyrelsen

Udbudsjurist til Danmarks største IT-udbud

Udviklings- og Forenklingsstyrelsen

Controller til økonomi og compliance

RISMA Systems A/S

Senior PHP-udvikler

Billetkontoret A/S

.NET Full Stack Developer