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.
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.
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);
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.
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.