String als Befehl ausführen, wie geht das ?

25/02/2010 - 07:51 von Karl Twele | Report spam
Hallo,

ich hab folgenden Code :


private void frmSiloAnzeige_Load(object sender, EventArgs e)
{
this.maschineTableAdapter.Fill(this.dsSiloAnzeige.Maschine);
for (int i = 0; i < maschineDataGridView.RowCount; i++)
{
maschineBindingSource.Position = i;
DataRowView aDRV = (DataRowView)this.maschineBindingSource.Current;
dsSiloAnzeige.MaschineRow oCurRow = (dsSiloAnzeige.MaschineRow)aDRV.Row;
ShapeWidth(Convert.ToInt32(oCurRow.Silofuellmenge), Convert.ToString(i+1));
}
maschineBindingSource.MoveFirst();
}

private void ShapeWidth(int intFuellung, string strI)
{
if (strI == "1") rectangleShape1.Width = Convert.ToInt32(Convert.ToDouble(intFuellung) * 0.005);
if (strI == "2") rectangleShape2.Width = Convert.ToInt32(Convert.ToDouble(intFuellung) * 0.005);
if (strI == "3") rectangleShape3.Width = Convert.ToInt32(Convert.ToDouble(intFuellung) * 0.005);
if (strI == "4") rectangleShape4.Width = Convert.ToInt32(Convert.ToDouble(intFuellung) * 0.005);
if (strI == "5") rectangleShape5.Width = Convert.ToInt32(Convert.ToDouble(intFuellung) * 0.005);
if (strI == "6") rectangleShape6.Width = Convert.ToInt32(Convert.ToDouble(intFuellung) * 0.005);
if (strI == "7") rectangleShape7.Width = Convert.ToInt32(Convert.ToDouble(intFuellung) * 0.005);
if (strI == "8") rectangleShape8.Width = Convert.ToInt32(Convert.ToDouble(intFuellung) * 0.005);
if (strI == "9") rectangleShape9.Width = Convert.ToInt32(Convert.ToDouble(intFuellung) * 0.005);
if (strI == "10") rectangleShape10.Width = Convert.ToInt32(Convert.ToDouble(intFuellung) * 0.005);
if (strI == "11") rectangleShape11.Width = Convert.ToInt32(Convert.ToDouble(intFuellung) * 0.005);
if (strI == "12") rectangleShape12.Width = Convert.ToInt32(Convert.ToDouble(intFuellung) * 0.005);
if (strI == "13") rectangleShape13.Width = Convert.ToInt32(Convert.ToDouble(intFuellung) * 0.005);
if (strI == "14") rectangleShape14.Width = Convert.ToInt32(Convert.ToDouble(intFuellung) * 0.005);
if (strI == "15") rectangleShape15.Width = Convert.ToInt32(Convert.ToDouble(intFuellung) * 0.005);
if (strI == "16") rectangleShape16.Width = Convert.ToInt32(Convert.ToDouble(intFuellung) * 0.005);
if (strI == "17") rectangleShape17.Width = Convert.ToInt32(Convert.ToDouble(intFuellung) * 0.005);
if (strI == "18") rectangleShape18.Width = Convert.ToInt32(Convert.ToDouble(intFuellung) * 0.005);
}



damit zeige ich ein Fülldiagramm mit 18 Shapes im Form. Das geht
natürlich so. Gibt es aber eine Möglichkeit das Width direkt über einen
Befehl zu veràndern, etwa so :


for (int i = 0; i < maschineDataGridView.RowCount; i++)
{
maschineBindingSource.Position = i;
DataRowView aDRV = (DataRowView)this.maschineBindingSource.Current;
dsSiloAnzeige.MaschineRow oCurRow = (dsSiloAnzeige.MaschineRow)aDRV.Row;
string strShapeWidth = string.Format("rectangleShape{0}.Width = Convert.ToInt32(Convert.ToDouble(intFuellung) * 0.005)", i + 1);
"Ausführen" strShapeWidth;
}



und wie sieht der Befehl "Ausführen dann in C# aus ? In Foxprow gibt es
dafür ein &strShapeWidth. Hab nichts im Netz gefunden darüber.

Gruß KT
 

Lesen sie die antworten

#1 FrankDzaebel
25/02/2010 - 09:56 | Warnen spam
Hallo Karl,

Code in Strings auszuführen würde zwar gehen,
aber unter C# macht man das vorzugsweise
typsicher und durch den Compiler überprüft.

Das bedeutet in Deinem Fall etwa, die
Rectangle's zum Beispiel in eine
List<Rectangle> zu füllen.
Dann kannst Du sauber über deren Eigenschaften
arbeiten.
Auch folgende Techniken sind möglich:

[Automatisches Nummerieren von Steuerelement-Array's]
http://dzaebel.net/TwoLineBinding.htm


ciao Frank
Dipl.Inf. Frank Dzaebel [MCP/MVP C#]
http://Dzaebel.NET

Ähnliche fragen