ある種のマップを描画するには、テーブルがあり、各セルに 1 つの ImageButton を動的に追加する必要があります。これまでのところ、問題ありません。しかし、いずれかのコントロールがクリックされたときに、すべてのコントロールの onmouseover カーソルを変更する必要があります。より正確には、カーソルがクリックされた ImageButton の ImageUrl になりたいと思います。これは png 形式です。
protected void Page_Load(object sender, EventArgs e)
{
for (int i = 0; i < 20; i++)
{
// Create new row and add it to the table.
TableRow line = new TableRow();
_DomainMap.Rows.Add(line);
for (int j = 0; j < 30; j++)
{
// Create a new cell and add it to the row.
TableCell cell = new TableCell();
cell.ID = "_Case"+i+j;
ImageButton domain_item = new ImageButton();
domain_item.CssClass = "domainitem";
domain_item.ImageUrl = "~/Images/empty.png";
domain_item.Click += new ImageClickEventHandler(_DomainItem_Click);
domain_item.ID = "_Image" + i + j;
cell.Controls.Add(domain_item);
line.Cells.Add(cell);
}
}
}
protected void _DomainItem_Click(object sender, EventArgs e)
{
ChangeCursor(((ImageButton)sender).ImageUrl);
}
protected void ChangeCursor(String cursor_path)
{
for (int i = 0; i < _DomainMap.Rows.Count; i++)
{
for (int j = 0; j < _DomainMap.Rows[i].Cells.Count; j++)
{
ImageButton imgb = ((ImageButton)_DomainMap.FindControl("_Image" + i + j));
imgb.Attributes.Add("onmouseover", "setcursor(" + imgb + ", " + imgb.ImageUrl + ");");
}
}
}
そして「setcursor」JavaScript関数:
<script type="text/javascript">
function setcursor(control, cur)
{
control.style.cursor = "url("+cur+")";
}
</script>