[工作札記]03: 微軟Winform窗體中設計上的Bug,會導致程序編譯失敗,影響范圍:到最新的.net4.7.2都有


工作中,我們發現了微軟.net WinForm的一個Bug,會導致窗體設計器自動生成的代碼失效,這個Bug從.net2.0到最新的.net4.7.2都存在,一直沒有解決。最初是我在教學工作中發現的,后來工作的時候該Bug也常現。

  • 重現步驟:

  使用VisualStudio2013/2015/2017/2019創建一個新的Windows窗體程序(使用C#或者VB.net都可以)

  新建的默認空白的窗體程序,點擊運行,可以正常運行:

  這時,我們往窗體拖一個ListView控件,手動添加兩列,名稱分別為Id/編號、Name/姓名:

  運行程序,報錯:

  點擊錯誤詳情,他給出提示讓人丈二金剛摸不着頭腦,姑且認為窗體自動生成的代碼有誤,刪除該行,程序正常運行:

  可是,一旦對窗體的任何控件進行更改(調整窗體大小,修改窗體屬性等),又會導致編譯無法通過:

只好再進設計器代碼,刪除出錯的行。  

該Bug在DataGridView中也同樣出現:

 

解決方法:

  1. 聯系微軟在下個版本中修正Bug;
  2. 不使用Name作為表格列的名稱。

題外話:

  微軟在給我們帶來便利的同時,也帶給我們很多的麻煩:)

 

--------------------------------------------------------------------------------------------------------------------------------------------------------------- 

Bug Part 2:

我們在相同的地方,給Windows控件的Name屬性賦值

1.給窗體控件賦值為Name,編譯、運行能夠通過:

運行程序,一切正常:

給DataGridView控件賦值,編譯,報錯了:

2. 感謝Build_Werther提供的情況,這回,我們在相同的地方,把窗體的Name設置成為Program,編譯,報錯:

我們把DataGridView命名為Program,編譯、運行、一切正常:

好,同樣都是Windows控件,在同樣的地方設置屬性,連提示都一樣的:“指示代碼中用來標識該對象的名稱”。一個能用,一個不能用,換一個名字,前面的不能用,后面的又能用了,你說這不是Bug,不是設計上的問題嗎?

——“這有兩根金條,你告訴我,哪根是高尚的?哪根是齷齪的?”

 

 

.net工作札記系列:

[工作札記]01: CS系統中分頁控件的制作

[工作札記]02: .Net Winform控件TreeView最簡遞歸綁定方法

[工作札記]03: 微軟Winform窗體中設計上的Bug,會導致程序編譯失敗,影響范圍:到最新的.net4.7.2都有


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM