2011-10-05 157 views
1

我有如何將布爾轉換可空布爾(布爾?)

    implied(tiny int)(something like nullable bool) 
       providerid(int) 

表提供商我有一個表格,我有複選框

我做使用C#的WinForms應用程序。 。

我使用enitities和我的DbContext名字的DbContext

如何隱蔽布爾在升C可空布爾(布爾?)。

我已經試過這樣

 if (chkbox.checked == true) 

      bool yes = 0; 
     else 

      bool yes = 1; 

     dbcontext.implied = yes; 

,但得到了一個錯誤

Cannot convert bool to bool? 
+6

該代碼以各種方式無效C#,並且您沒有說出任何有關出錯的位置。請閱讀http://tinyurl.com/so-hints並編輯您的問題。 –

+1

聽起來很奇怪。你能發表一些實際上表現出問題的代碼嗎?你的代碼示例顯然不能編譯。 'yes'的範圍太小,並且沒有達到將'yes'分配給'implied'的行,並且通常'bool'隱式轉換爲'bool?'。 – CodesInChaos

+0

直接任務應該工作 – sll

回答

8

顯式轉換爲一個bool?

bool b = true; 
bool? b2 = (bool?)b; 

在情況下,它的興趣,你可以轉換到bool?bool。您可以通過首先檢查HasValue來做到這一點,如果它爲空將返回false,如果不爲空則返回true

如果確實有值,則可以投射到布爾值。

bool? b = null; 
if (b.HasValue == false) // it's null 
{ 
    //initialize b 
    b = false; 
} 
else if((bool)b == true) 
{ 
    // do whatever 
} 

退房http://msdn.microsoft.com/en-us/library/bb384091.aspx for bool?布爾轉換。

+0

非常感謝..對你的支持 –

2

dbcontext.implied = new Nullable<bool>(yes);

+0

非常感謝..支持您的支持 –

2

可以直接做這樣的事情

bool result = true; 
bool? toBindData = (bool?)result; 
+0

演員不應該是必要的。 – CodesInChaos

+0

非常感謝..支持你的支持 –

0

嘗試Convert.ToBoolean(您的複選框)

下面我就我DataGridView如何測試,以檢查CheckBox列,它工作正常。

if (Convert.ToBoolean(dgv.Rows[r].Cells["Delete"].Value)) 
{ 
    //Do work; 
}