データベースエントリに基づいてフォーム上にいくつかのボタンを作成しましたが、それらは問題なく機能します。それらを作成するためのコードは次のとおりです。ご覧のとおり、私は彼らにタグを付けました:
for (int i = 0; i <= count && i < 3; i++)
{
btnAdd.Text = dataTable.Rows[i]["deviceDescription"].ToString();
btnAdd.Location = new Point(x, y);
btnAdd.Tag = i;
this.Controls.Add(btnAdd);
}
これらのボタンは、ポーリングシステムを視覚化するために使用します。たとえば、すべてが正常な場合はボタンを緑色にし、問題がある場合はボタンを赤色にします。
したがって、私が遭遇している問題は、後でボタンを参照して、それらのプロパティを変更できるようにすることです。私は次のようなものを試しました:
this.Invoke((MethodInvoker)delegate
{
// txtOutput1.Text = (result[4] == 0x00 ? "HIGH" : "LOW"); // runs on UI thread
Button foundButton = (Button)Controls.Find(buttonNumber.ToString(), true)[0];
if (result[4] == 0x00)
{
foundButton.BackColor = Color.Green;
}
else
{
foundButton.BackColor = Color.Red;
}
});
しかし、役に立たない...私はの構文を変更しようとしましたControls.Find()
が、それでも運がありませんでした。誰かが以前にこの問題に遭遇したことがありますか、または何をすべきか知っていますか?