2011-10-05 4 views
1

i un fournisseur de table avec colonnecomment convertir le bool nullable bool (bool?)

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

je forme et j'ai case à cocher

Je fais des applications WinForms utilisant C#. .

J'utilise enitities et mon nom de dbcontext est dbcontext

Comment Covert bool nullable bool (bool?) en ut dièse.

J'ai essayé cette façon

 if (chkbox.checked == true) 

      bool yes = 0; 
     else 

      bool yes = 1; 

     dbcontext.implied = yes; 

mais nous avons eu une erreur

Cannot convert bool to bool? 
+6

Ce code n'est pas valide C# de diverses manières, et vous n'avez rien dit à propos de l'erreur. S'il vous plaît lire http://tinyurl.com/so-hints et éditer votre question. –

+1

Cela semble très étrange. Pourriez-vous poster du code qui présente le problème? Votre exemple de code ne compile évidemment pas. La portée de 'yes' est trop petite et n'atteint pas la ligne où vous affectez' yes' à 'implied', et normalement' bool' est converti en 'bool?' Implicitement. – CodesInChaos

+0

Affectation droite devrait fonctionner – sll

Répondre

8

jeté à un 01 Explicitement

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

Dans le cas où il est intéressant, vous pouvez convertir bool? à bool. Vous pouvez le faire en vérifiant d'abord HasValue qui renverra false s'il est nul ou true s'il n'est pas null.

S'il a une valeur, vous pouvez lancer un booléen.

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

Découvrez http://msdn.microsoft.com/en-us/library/bb384091.aspx pour bool? convertir en bool.

+0

Un grand merci .. pour votre soutien –

2

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

+0

Merci beaucoup ..guys pour votre soutien –

2

peut directement faire quelque chose comme

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

Le casting ne devrait pas être nécessaire. – CodesInChaos

+0

Un grand merci .. guys pour votre soutien –

0

Essayez Convert.ToBoolean (Votre checkBox)

Voici comment je l'ai testé sur mon DataGridView pour vérifier CheckBox colonne et il fonctionne très bien.

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