Avatar billede km2 Nybegynder
15. juni 2009 - 15:20 Der er 10 kommentarer og
1 løsning

vb kode til C# - Hjælp!!

Hvordan ville man kode følgende linier vb kode i C#?

Dim Index As Short = Label1.GetIndex(eventSender)
       
        Label1(Index).Visible = False
        Text1(Index).Visible = True
        Text1(Index).Focus()

Det er især den første linie kode som jeg ikke kan gøre i C#. GetIndex kender C# slet ikke så hvad kunne man bruge istedet for GetIndex.

Håber der er nogen der kan hjælpe med problemet.
Avatar billede arne_v Ekspert
15. juni 2009 - 15:58 #1
Hvad goer GetIndex funktionen?
Avatar billede km2 Nybegynder
15. juni 2009 - 16:43 #2
Jeg har 64 tekstbokse i et panel lige nu. Jeg vil gerne kunne klikke på en label og når jeg gør det bliver labelen til en af de 64 tekstbokse. Det er det som vb koden gør. Men jeg kan ikke skrive det på samme måde i C# da GetIndex ikke kendes af C#. Når man kører programmet er der 64 labels at se i panelet. Det skal så være muligt for mig at klikke på en label og når jeg gør det bliver labelen til en tekstboks. Det vil sige tekstboksen bliver synlig ved klik på label. Hvordan omskriver jeg det til C#?
Label1 er et array af labels og Text1 er et array af tekstbokse.

Håber du kan hjælpe mig videre.
Avatar billede km2 Nybegynder
15. juni 2009 - 17:59 #3
Jeg er ikke helt klar over hvad GetIndex gør men det jeg skal bruge de linier kode til er at hver label som man trykker på enkeltvis skal blive til en tekstboks. de må ikke alle sammen blive synlige. Så det er vel enlig mere hvordan man bruger object sender i sammenhæng med label.

Er der nogen ideer?
Avatar billede hmortensen Nybegynder
15. juni 2009 - 18:10 #4
Følgende bør kunne gøre det:
int Index = Array.IndexOf(Label1, eventSender);

Men lyder som om et DataGridView ville kunne løse opgaven pænere.
Avatar billede km2 Nybegynder
15. juni 2009 - 18:49 #5
Tak for svaret. jeg vil prøve at bruge det.
Avatar billede hmortensen Nybegynder
15. juni 2009 - 18:53 #6
Og i C# bruges [] i stedet for ():
Label1[Index].Visible = false;
Avatar billede km2 Nybegynder
15. juni 2009 - 19:08 #7
Jeg må
gøre noget forkert for compileren siger at indexet ligger uden for arrayets grænser og det virker heller ikke.

Jeg har skrevet
int index = Array.IndexOf(Label1, sender)
Label1[index].Visible = false;
Avatar billede hmortensen Nybegynder
15. juni 2009 - 19:15 #8
Kan du poste noget mere af din kode?
Avatar billede km2 Nybegynder
15. juni 2009 - 19:26 #9
Ok du får lige de to vb funktioner som gør tricket. Jeg har et C# program med 64 tekstbokse som genereres på et panel ved runtime. Jeg ønsker nu at ved runtime ser man 64 labels istedet og når man klikker med musen på en af labels så bliver en tekstboks synlig bag ved label og labelen kan så ikke ses mere. Det er ikke lavet endnu men i vb er det lavet. Så jeg har et labelarray og et tekstboksarray. Du må gerne se hvordan jeg bruger mit tekstboksarray hvis det kan hjælpe.

Private Sub Label1_Click(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Label1.Click
        Dim Index As Short = Label1.GetIndex(eventSender)
       
        Label1(Index).Visible = False
        Text1(Index).Visible = True
        Text1(Index).Focus()
    End Sub


Private Sub Text1_Leave(ByVal eventSender As System.Object, ByVal eventArgs As System.EventArgs) Handles Text1.Leave
        Dim Index As Short = Text1.GetIndex(eventSender)
        Text1(Index).Visible = False
        Label1(Index).Text = Text1(Index).Text
        Label1(Index).Visible = True
    End Sub

Her er lidt af min C# kode
for (int a = 0; a < textbox.Length; a++)
            {
                textbox[a] = new TextBox();
                textbox[a].Size = new System.Drawing.Size(63, 13);
                textbox[a].Visible = true;
                textbox[a].BorderStyle = BorderStyle.None;
                textbox[a].Name = "TextBox" + 1;
                textbox[a].Text = "Text";
               

                if (a <= 7)
                {
                    textbox[a].Location = new Point((58 + (a * 75)), 216);
                }
                if (a > 7 && a < 16)
                {
                    textbox[a].Location = new Point((-542 + (a * 75)), 226);
                }
                if (a > 15 && a < 24)
                {
                    textbox[a].Location = new Point((-1143 + (a * 75)), 269);
                }
                if (a > 23 && a < 32)
                {
                    textbox[a].Location = new Point((-1743 + (a * 75)), 279);
                }
                if (a > 31 && a < 40)
                {
                    textbox[a].Location = new Point((-2343 + (a * 75)), 322);
                }
                if (a > 39 && a < 48)
                {
                    textbox[a].Location = new Point((-2943 + (a * 75)), 332);
                }
                if (a > 47 && a < 56)
                {
                    textbox[a].Location = new Point((-3543 + (a * 75)), 374);
                }
                if (a > 55 && a < 64)
                {
                    textbox[a].Location = new Point((-4143 + (a * 75)), 384);

                }
                Picture1.Controls.Add(textbox[a]);
            }
Avatar billede km2 Nybegynder
15. juni 2009 - 20:16 #10
Det virker alligevel det kode du postede. Man skal bare have en click event for labelarrayet og en leave event for textboxarrayet. Ihvertfald så virker det nu. Tak for hjælpen.
Avatar billede hmortensen Nybegynder
15. juni 2009 - 20:22 #11
Det var så lidt.
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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