日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

[WPF Bug清单]之(6)——Button的IsCancel属性失效

發(fā)布時間:2025/7/14 asp.net 49 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [WPF Bug清单]之(6)——Button的IsCancel属性失效 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

上一篇中,描述了模態(tài)對話框隱藏之后變成了非模態(tài)的Bug,很多人回復(fù)表示這不算是一個Bug,我也表示理解。Bug只有在需求之下才有意義,不同的需求,對Bug的界定也不一樣。作為一個Framework.NET只能做到在多數(shù)時候是符合最廣泛群體的需求的,就可以說它合格。但是對于前一篇描述的問題,想補充一下自己的考慮。

?

WindowShowShowDialog,用于將窗體展現(xiàn)(我沒有用顯示)出來,而Close用于關(guān)閉。Close之后就不能再用Show或是ShowDialog再次將窗體展現(xiàn)出來,否則會拋出異常,所以5樓的gboxcc回復(fù)的是錯的。很同情這位gboxcc,因為他認(rèn)為我說錯的那句,恰恰是我寫過代碼驗證過的。

?

如果想隱藏而不關(guān)閉一個窗體,顯然用Close是不行的。而且還要把所有的Close事件Cancel掉,保證窗體不會被Close,然后只能用Visibility 將窗體隱藏起來。隱藏之后,如果要將窗體再次顯示出來,我的第一感覺是用Visibility,但是發(fā)現(xiàn)不行。

?

從這個角度而言,Window類,Show/Close只在開始和結(jié)束的時候調(diào)用,因為它們不能交替調(diào)用;在窗體Show之后,用Visibility控制其可見性,因為可見性可以隨意交替設(shè)置的。我認(rèn)為這才是一個非常自然的事情。但是Window的實際情況是,Visibility的設(shè)置,會使isShowingDialog變量的值發(fā)生變化,單從需求上講,這是不應(yīng)該的。所以將其做為一個Bug提了出來。Colin Han認(rèn)為這是“為了更好地用戶體驗,專門做出的設(shè)計。”,我亦不以為然。而且我感覺微軟的UX團隊與開發(fā)團隊的溝通還很不充分,比如我在另一篇文章中提到的WPFWindow,沒有提供一個屬性來設(shè)置一個窗體是否顯示Icon,這本身就不符合微軟自己的UX Guide

?

回復(fù)的人一致認(rèn)為,再次顯示這個窗體時也應(yīng)該用ShowDialog。好,這篇文章就是為次而生的。因為用ShowDialog將窗體再次顯示出來同樣有問題。連代碼都不用改,直接用上次的代碼就可以重現(xiàn)這個問題。使用ShowDialog方法將一個窗體再次顯示出來之后,窗體上的”Hide Self”按鈕失效了。注意是再次,第一次ShowDialog出來時的行為是正常的。

?

這里順便介紹一下IsCancel屬性,MSDN上對它的解釋如下:獲取或設(shè)置一個,該值指示Button是否是一個“取消”按鈕。用戶可以通過按ESC鍵激活“取消”按鈕。其實我感覺這句話對于新手而言實在是沒有什么幫助。好像就告訴別人這個屬性就是給Button加了個ESC鍵作為快捷鍵。必須要和MSDN上的很多文檔合起來看才知道這個IsCancel按鈕在不同環(huán)境下分別起什么作用,其實還不如自己寫個代碼試一下來得方便。

?

對于示例中的代碼而言,IsCancel就相當(dāng)于讓當(dāng)前窗體關(guān)閉。這是給窗體添加一個關(guān)閉按鈕最簡單的方式(沒有之一)。因為這個Bug用的就是上一篇的代碼。所以就不給大家貼圖了。自己運行一下吧。邏輯如下:

?

1.?????? 點擊示例中的Show Model Dialog按鈕——顯示一個模態(tài)對話框。

2.?????? 可以用Hide Self關(guān)閉彈出框。

3.?????? 再用Show Model Dialog彈出這個對話框。

4.?????? 那個Hide Self按鈕不再起作用了。

?

同系列的其它文章:

[WPF Bug清單]()與之(1)——可以多選的單選ListBox

[WPF Bug清單](2)——RadioButtonIsChecked綁定失效

[WPF Bug清單](3)——暗中創(chuàng)建文件的打開文件對話框

[WPF Bug清單](4)——點擊RadioButton的空白沒有反應(yīng)

[WPF Bug清單](5)——隱藏模態(tài)對話框后變成非模態(tài)

[WPF Bug清單](7)——頑固的Error Template

[WPF Bug清單](8)——RowDefinitionMaxHeight在一定條件下失效

[WPF Bug清單](9)——消失的光標(biāo)

?

我是MS Fan,但是我依然會以挑剔的眼光看它;只因為我是MS Fan的原因是,從多數(shù)開發(fā)和娛樂和應(yīng)用的角度而言,MS是目前最好的選擇。如果有一天Linux的哪個發(fā)行版在多數(shù)方面超過了MS,我會義無反顧地投入Linux。不過是一個平臺,不是女友,也不是“知已者”,不需要相守一生。

總結(jié)

以上是生活随笔為你收集整理的[WPF Bug清单]之(6)——Button的IsCancel属性失效的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。