Labels aanpassen waarvan je van tevoren niet weet wat de naam ervan is

Status
Niet open voor verdere reacties.

pdedecker

Gebruiker
Lid geworden
19 jul 2008
Berichten
35
Ik wil iets dergelijks doen:

Code:
int test = 8;
labelNummer + test + beschrijving.Text = "testing";

Voor het geval dat dit niet echt logisch klinkt: ik wil dat die tweede regel code in dit geval labelNummer8beschrijving.Text de waarde "testing" geeft. Als test 9 was, dan zou de computer labelNummer9beschrijving.Text moeten aanpassen enzovoort.

Is dit mogelijk?
 
Dit werkt precies niet voor PictureBox...

Code:
String strChnmbr = chnmbr.ToString();
this.Controls["picCh" + strChnmbr].Image = global::TelevisedMini.Properties.Resources.canvas;
geeft 'System.Windows.Forms.Control' does not contain a definition for 'Image' and no extension method 'Image' accepting a first argument of type 'System.Windows.Forms.Control' could be found (are you missing a using directive or an assembly reference?). Is hier een ander commando voor nodig?

Edit: Ik heb hetzelfde probleem met labels. Maak ik misschien een syntaxfout met die plusjes? Ik ben van JavaScript gewoon dat er plusjes moeten tussenstaan, en tot hiertoe heb ik er nog geen probleem mee gehad in C#.
 
Laatst bewerkt:
De methode uit de eerste post werkt inderdaad enkel voor eigenschappen uit de base klasse 'control'. Wanneer je bijvoorbeeld de Image eigenschap van een picturebox wil aanspreken dien je de control eerst te casten naar een picturebox object:

Code:
 PictureBox pic = (PictureBox)this.Controls["pictureBox1"];
            pic.Image = new Bitmap("c:/t1.jpg");
 
Plaats je strings in een array en laat de index en de key corresponderen.
 
Vreemd... ik probeer lblSong1 aan te passen via this.Controls["lblSong1"].Enabled = true;, maar ik krijg de volgende foutmelding:

csharpdz0.jpg


Ik heb het gecontroleerd: lblSong1 bestaat wel degelijk en labels hebben een eigenschap Enabled. Uiteraard zou ik lblSong1.Enabled = true kunnen doen, maar ik wil de code veralgemenen naar this.Controls["lblSong" + i].Enabled = true;.
 
Laatst bewerkt:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Net;
using System.IO;

namespace DesqPod
{
public partial class frmDesqPod : Form
{
private string strNextOffset;
private string[] strURLs = new String[5];

// Hier staan een aantal andere functies

private void LoadData(string pgResults)
{
// Instructies...
int i;
for (i = 0; i < 5; i++)
{
// Instructies...

string strIplusone = (i + 1).ToString();
this.Controls["lblSong" + strIplusone].Enabled = true;
this.Controls["lblSong" + strIplusone].Text = strTitle;
this.Controls["btnPlay" + strIplusone].Enabled = true;

// Instructies...
}
// Instructies...
}
}
}
De string pgResults is trouwens een HTML-pagina die ik van het internet heb gehaald en vervolgens via ReadToEnd heb ingelezen. Deze pagina wordt verwerkt in de functie LoadData.
 
Er zijn vijf knoppen en vijf labels die namen hebben gekregen volgens het stramien lblSongnummer en btnPlaynummer.

desqpodos1.jpg
 
Lijkt me correct. Kan je de call stack even posten. (error boodschap)
 
Oeps, ik was deze thread even uit het oog verloren. Ik heb het opgelost met een structuur die volgens dit stramien is opgesteld:
Code:
if (i == 1) {
lblSong1.Text = "...";
}
else if (i == 2) {
lblSong2.Text = "...";
}
// Enzovoort
In totaal gaat het maar over vijf elementen, dus zoveel extra code is het niet.
 
Waarom geen datagridview aanpassen?

Gebruik van column 1 = Naam van de song
Gebruik van column 2 = Button / image

kun je de grid databounden aan de table die je van je database hebt ontvangen.
Limiet van hoeveelheid nummers heb je dan niet enz.

Mooie hiervan is dat je de gebruikersfunctionaliteit later kunt uitbreiden naar bv:
- Alle geselecteerde rijen afspelen -> bouwt een tracklist op die junt opslaan en bewerken e.d.

groeten
 
Interessant dat je dat aanhaalt; ik ga dat onthouden voor latere projecten. Nu, ik zit altijd met vijf items dus een DataGridView is overbodig. Bovendien heb ik geen nood aan playlist-functionaliteit in deze toepassing.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan