OpenFileDialog的ShowDialog方法返回一個可爲null的布爾值,如果用戶單擊了Cancel,則單擊OK或False時設置爲true。它什麼時候返回null
?該文件沒有說。Microsoft.Win32.OpenFileDialog.ShowDialog()何時返回null?
8
A
回答
11
這在下面鏈接的問題是說,但我會在這裏提到,Programming WPF (Chris Sells, Ian Griffiths)說:
的ShowDialog將始終返回true或 假。 ...僅在對話框顯示 之後但在關閉之前 爲DialogResult null。
3
按照.NET reflector,Microsoft.Win32.OpenFileDialog.ShowDialog
由基類,Microsoft.Win32.CommonDialog
實施。這實現了只有一個return語句:
return new bool?(this.RunDialog(activeWindow));
RunDialog
返回bool
,而不是一個bool?
。
bool?
對於System.Nullable<bool>
只是C# shorthand。根據反射器,constructor of System.Nullable<bool>
再次將空值的值設置爲其參數,並將其hasValue屬性標記爲true。
所以......你不應該得到null
結果。快速測試證實,在不取消(紅色x按鈕)的情況下關閉對話框確實會返回false
值,而不是null
。
OpenFileDialog的Windows窗體版本返回一個DialogResult,它有一個wider range of values。
1
我的猜測是OpenFileDialog返回bool?以與實際上可以返回空結果的其他WPF對話一致。
相關問題
- 1. Registry.CreateSubKey何時返回null?
- 2. Idiomatic C#:什麼時候返回null以及何時返回NaN
- 3. null == null返回false?
- 4. 什麼時候返回null?
- 5. Params返回爲NULL「有時」
- 6. 時間差異返回NULL
- 7. document.getElementById有時會返回null
- 8. 時間轉換返回null
- 9. request.getparameter()有時會返回null
- 10. IE7 window.open時.focus返回null
- 11. RecyclerView getLayoutParams返回null(有時)
- 12. 時的Mockito thenreturn返回null
- 13. request.getRemoteUser()有時會返回null
- 14. UIManager.getColor返回null有時
- 15. XElement.element()有時返回null
- 16. NULL返回時爲對象
- 17. getLastKnownLocation有時返回null
- 18. ConfigurationManager.AppSettings - 打開時返回null
- 19. PropertyInfo.GetValue(null,null)返回null
- 20. @@ IDENTITY沒有時SCOPE_IDENTITY如何返回null?
- 21. 如何Microsoft.Win32.OpenFileDialog()
- 22. managedQuery(Media.EXTERNAL_CONTENT_URI,projection,null,null,null);在設備上運行時返回null
- 23. UsbDevice.FromIdAsync返回null
- 24. ContentResolver.insert返回null
- 25. BitmapFactory.decodeByteArray()返回NULL
- 26. glXChooseFBConfig返回NULL
- 27. {this.props.children}返回null
- 28. findViewByID返回null
- 29. Assembly.GetType返回null
- 30. `DataGridViewComboBoxCell`返回`null`
「好奇心」是一個非常好的答案,但我很想知道你爲什麼問?爲什麼不直接比較它返回到「真」(TryParse等等)並滾動? – lance
只是想知道爲什麼他們使用可空的布爾值而不是標準布爾值。正如你所建議的,與真正的作品相比,效果很好。 –
現在你也讓我好奇。希望有人會有一個很好的答案! – lance