**如下:
private void toolstripbutton1_click(object sender, eventargs e)
private void picturebox1_mouseclick(object sender, mouseeventargs e)
mymap.layers.add(layerselect);
picturebox1.image = mymap.getmap();
}目的是在新加層的時候把原來的刪掉,防止太多造成不透明,但是如果是完整的選層已經做好的話,就保留下來(通過名字來刪,這樣整的選層的選層就可保留)。
問題在於在選好乙個選第二個時發現picturebox1_mouseclick函式執行了兩次,想了下 ,多點了幾次toolstripbutton1,多觸發了幾次toolstripbutton1_click函式,結果發現觸發的picturebox1_mouseclick次數更多了,原來是每次點toolstripbutton1都會註冊乙個this.picturebox1.mouseclick += new system.windows.forms.mouseeventhandler(this.picturebox1_mouseclick);
事件,而點滑鼠後註冊了幾個該事件就會觸發幾次,所以,改稱:
private void toolstripbutton1_click(object sender, eventargs e)
catch (exception ex)
}問題解決。
關於handler機制的一點見解
當handler接收到message時,會先去查詢looper物件,而looper物件會建立乙個messagequeue並且管理它。這條接收到的message會放入looper的messagequeue中,looper 通過不斷的輪詢,當獲取到message時,會將該訊息 回handler,然後ha...
關於viewWithTag的一點說明
通常我們使用viewwithtag如下情形 如果我們用了乙個父view,上面放了多個子view,每個子view都通過從0開始的tag值來進行標誌,以便於後期在像view上直接使用viewwithtag tag值來取各個子view 而在用 父view viewwithtag 0 取到的view,發現不...
Handler的一點理論分析
threadlocal是乙個執行緒內部的資料儲存類。它可以為各執行緒儲存資料,同時只能由當前執行緒獲取到儲存的資料,對於其他執行緒來說則獲取不到。它可以在不同執行緒中維護一套資料的副本,並且彼此互不干擾。一言不合上 private static threadlocalthreadlocal new ...