最近解決できなかった問題があります。私はこのコードを持っています
foreach (Hashtable i in (ArrayList)inv["database"])
{
if (i != null)
{
if (i["type"].ToString() == "1")
{
if (i["dataValue"].ToString() != "0")
{
inv{nn}.Image = Program.Properties.Resources._i["type"].ToString()+"-"+i["dataValue"].ToString();
}
else
{
inv{nn}.Image = Program.Properties.Resources._i["type"].ToString()
}
}
}
nn++;
}
私は36個のコントロールを持っています(これは私のプロジェクトにあるクラスなので、「バニラ」ではありません)、それぞれが単一の「ピクチャボックス」です。次の構文で 505 個の画像があります。データ値が 0 の場合は {typeID}.png、データ値が 0 より大きい場合は {typeID}-{dataValue}.png です。
たとえば、最初のループ、i["type"].ToString() = 1 および i["dataValue"].ToString() = 3 の場合、inv0 のイメージは Program.Proporties.Resources._1-3 に変更されます。 2番目のループが来るとinv1の画像が変化するなど... inv35まで
そのようなことは可能ですか?私は試した
InterpolationBox x = Form1.FindControl("inv"+nn)
System.Web.UIを使用したFindControl(FrameWork 4)などはないようです。
私は試した
InterpolationBox x = this.Controls.Find("inv" + nn, false);
そして、「System.Windows.Forms.Control[]」型のオブジェクトを「Program.InterpolatedBox」型にキャストできませんでした。とにかく、そのエラーを取り除くとしたら、コピーされた 'x' だけでなく、実際のピクチャボックスを変更できますか?