自畫菜單中如何觸發MeasureItem事件的問題及解決辦法

來源:互聯網
上載者:User
目前的gsp workflow designer是有國際化支援的:多語言、數字、日曆等。今天剛剛把多語言加上。預設的designer是english的,菜單顯示正常。但是切換到中文後,主菜單的漢字都擠到一起了。如果中文是預設語言,那麼切換到english之後,english的菜單現實的寬度和漢字的時候是一樣的。所以,我就斷定,MeasureItem Event沒有被觸發。我設定的斷點沒有到達,也證實了這點。
到google上一開始搜尋:how to raise MeasureItem event in a menu,未果。只找到了一個listbox類似的問題。後來突然想到,應該這麼搜尋:fired MeasureItem event in a menu,找到了和上面類似的解決方案。然後自己實驗了一下,代碼如下:ArrayList list = new ArrayList();
foreach(MenuItem mi in mainmenu.MenuItems)list.Add(mi);
Mainmenu.MenuItems.Clear();
foreach(MenuItem mi in list)mainmenu.MenuItems.Add(mi);
// mainmenu是我擴充的,所有的redraw都在裡面。Init方法是為了對每個menuitem進行ownerdraw標誌的設定,以及對於DrawItem/MeasureItem兩個event進行handle
mainmenu.Init();

呵呵,然後就搞定了。問題原因,應該是:MeasureItem這個event只有在第一次顯示的時候或者“必要”的時候,才被觸發。其他的時候,沒有反應。而添加item到menu的collection並且重新顯示,會觸發這個事件的。
發兩個在這裡吧!

這是漢字的:

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.