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

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

  • 重現步驟:

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

  新建的默認空白的窗體程序,點擊運行,能夠正常運行:orm

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

  運行程序,報錯:io

  點擊錯誤詳情,發現窗體自動生成的代碼有誤,刪除後程序正常運行:編譯

  但是,一旦對窗體的任何控件進行更改(調整窗體大小,修改窗體屬性等),又會致使編譯沒法經過:List

  該Bug在DataGridView中也一樣出現:程序

 

解決方法:方法

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

題外話:im

  微軟在給咱們帶來便利的同時,也帶給咱們不少的麻煩:)

 

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

補充:

有些朋友以爲這不是Bug,以爲不符合設計預期的不是Bug,那麼,若是設計自己就有問題呢?

咱們再來一個實驗,咱們把剛纔那個窗體的Name屬性,改成Name:

運行程序,一切正常:

好,咱們把名字改回來,再把DataGridView的屬性,改成Name,編譯,報錯了:

好,一樣都是Windows控件,在一樣的地方設置屬性,一個能用,一個不能用,你說這不是設計上的問題?不是Bug嗎?

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

相關文章
相關標籤/搜索