星期五, 11月 23, 2007

為網頁上多個元件加入相同的事件處理 - 鍵盤

加入事件handler (兩種方法 擇一即可)

//為input element加入事件handler
HtmlElementCollection tt = divDeviceChoosing.GetElementsByTagName("input");
foreach (HtmlElement a in tt)
{
//Method 1: AttachEventHandler 據說利用+=不會覆蓋父物件的事件(i++與i=1)
a.AttachEventHandler("onclick", new EventHandler(Device_Click));

//Method 2: +=
a.Click +=new HtmlElementEventHandler(teachAni_Click);
}

//事件處理 (兩種方法 擇一即可)
private void teachAni_Click(object sender, EventArgs e)
{
//Method 1: 最快最簡單 (不過要注意事件handl要用HtmlElementEventHandler,而不是EventHandler,不然sender好像會null)
HtmlElement buster = (HtmlElement)sender;
choosing(buster.Id);

//Method 2: 剛被"激化"的ActiveElement
HtmlElement buster = divDeviceChoosing.Document.ActiveElement;
MessageBox.Show(buster.Id);
//int number = int.Parse(buster.Document.ActiveElement.GetAttribute("value"));
String MacAddr = buster.Document.ActiveElement.Id;
}


**動態加入元件及事件處理**

動態加入有兩種
1.利用HtmlDocument.CreateElement
注意:此方法可work,還沒有找到方法移除element ,法二就可以了

//建立一個input的html element
HtmlElement imgDevice = divDeviceChoosing.Document.CreateElement("input");
...
//加入事件處理
imgDevice.AttachEventHandler("onclick", new EventHandler(teachAni_Click));
//再接入某位置
divDeviceChoosing.InsertAdjacentElement(HtmlElementInsertionOrientation.BeforeEnd, imgDevice);

2.利用innerHtml

//加入多個可利用樣版
for (;;;)
{
string Butstr = "";
//套文字
string OutStr=OutStr.Replace("##id##",id);
}
//加入某段div裡
div.InnerHtml = OutStr;
//事件處理同上

沒有留言: