---
title: "Checkbox problem i C#"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/74485-checkbox-problem-i-c"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "saw"
published: "2003-04-19T10:09:38.000Z"
updated: "2003-04-20T07:08:35.000Z"
replies: 8
views: 344
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/74485-checkbox-problem-i-c"
---

# Checkbox problem i C#

## #1 — saw, 2003-04-19T10:09Z

Jag kommer ite på ett bra sätt att lösa detta.
Jag har 11 text rutor och 3 checkboxar.
Textrutorna initieras så här:

```
tr = new TextBox[11]; 

            tr[0]=textBoxFirma; 
            tr[1]=textBoxNamn; 
            tr[2]=textBoxBox; 
            tr[3]=textBoxAdress; 
            tr[4]=textBoxPostOrt; 
            tr[5]=textBoxTelefon; 
            tr[6]=textBoxMobil; 
            tr[7]=textBoxFax; 
            tr[8]=textBoxURL; 
            tr[9]=textBoxEpost; 
            tr[10]=textBoxAnteckning;
```

Sedan körs denna kod: 
 

```
string kolumn = listBoxTotal.SelectedItem.ToString(); 
            string SQL = "Select Firma,Namn,Box,Adress,PostOrt,Tel,
Mobil,Fax,URL,Epost,Anteck,EjLjud,Info,SkickCd FROM t_Kunder
 WHERE Firma  = '" + kolumn + "'"; 
                
                    
da = new OleDbDataAdapter(SQL, con); 
ds = new DataSet("frånKund"); 
            
try 
{ 
 con.Open(); 
 da.Fill(ds, "frånKund");    
 con.Close(); 
} 
catch(Exception fel) 
{ 
 MessageBox.Show(fel.Message,"Databasfel"); 
}    
            
int a = 0; 
            
  foreach(TextBox t in tr) 
  { 
    t.Text = ds.Tables["frånKund"].Rows[0][a].ToString();                
    a++; 
  }
}
```

Detta fungerar kanonbra, men jag kommer inte på hur jag skall 
fylla på med checkboxarna.
Jag borde säkert öka tr med 3, men då säger debuggen att jag
 inte kan blanda textboxar med checkboxar. Hur bör jag göra här?

Sedan borde jag ju ha en ifsats för att kolla om de är falskt eller
 sant?

Men kan/bör jag göra detta inne i foreach slingan?

Tacksam för svar.

Permalänk: https://www.webforum.nu/p/74485

## #2 — niko, 2003-04-19T10:51Z

Byt typ på tr till nåt som både TextBox och CheckBox ärver av. Tex *Form* eller för enkelhetens skull *Object*.

```
Object[] tr;

tr = new Object[14]; 
//Fyll på med textboxar, checkboxar eller vad du vill precis som tidigare.

//osv ..

foreach(Object t in tr) 
{ 
	//Kolla om det är en [i]TextBox[/i] och casta från [i]Object[/i] till [i]TextBox[/i] isåf.
	if(t is TextBox)
		((TextBox)t).Text = ds.Tables["frånKund"].Rows[0][a].ToString();
	else
		//Hantera checkboxar här.         
}
```

Permalänk: https://www.webforum.nu/p/1017074

## #3 — saw, 2003-04-19T17:59Z

Det tycks fungera, men jag faller på checkboxarna.
Jag får fel när jag försöker så här:

```
((checkbox)t)[a].Checked = (bool)ds.Tables["frånKund"].Rows[0]
[a].Value;
```

Hur bör jag göra?
PS
Jag använder mig av object
DS

Permalänk: https://www.webforum.nu/p/1017279

## #4 — niko, 2003-04-19T18:40Z

Först och främst bör du skriva: *CheckBox* eftersom C# är känsligt för stora och små bokstäver. Sen är jag tveksam till din castning till bool. Datasetet innehåller väl strängvärden?

Prova:

```
if (ds.Tables["frånKund"].Rows[0][a].ToString()=="nånting")
	((CheckBox)t).Checked=true;
else
	((CheckBox)t).Checked=false;
```

Eller lite "hippare":

```
((CheckBox)t).Checked=(ds.Tables["frånKund"].Rows[0][a].ToString()=="nånting")
```

Du får så klart ersätta "nånting" med det strängvärde som innebär att boxen ska vara ikryssad.

Permalänk: https://www.webforum.nu/p/1017313

## #5 — saw, 2003-04-19T20:54Z

Tack niko för att du försöker, men strul iallafall.
Det vissade sig att jag måste ha enbart textboxarna i en array, jag fick så många problem annars.

Vad jag försöker nu är att när jag läser in data, så försöker jag att plocka checkbox för checkbox.

```
		DataRow dr=ds.Tables["frånKund"].Rows[0]; 
			
			if ( dr["EjLjud"].ToString()=="1")
		{
			checkBox1.Checked=true;
		}
			else
				checkBox1.Checked=false;
```

I taballen så är det sparat som 1 så därför försöker jag med det, men tyvärr.....
Är jag ett helt hopplöst fall???

Permalänk: https://www.webforum.nu/p/1017403

## #6 — niko, 2003-04-19T21:28Z

Kan väl inte se nåt direkt fel på den kodsnutt du nu visar ..

Vad har fältet "EjLjud" för typ i databasen? 

Om det redan är en string så kanske den innehåller blanktecken på slutet? Prova isåf:

```
if ( dr["EjLjud"].ToString().Trim()=="1")
```

Om det är ett tal kan du skriva:

```
if ((int)dr["EjLjud"]==1)
```

Permalänk: https://www.webforum.nu/p/1017430

## #7 — saw, 2003-04-19T23:51Z

När jag gjorde databasen först(i Access) så var datatypen ja/nej.
Nu när den är inporterad till SQL server 2000 så är datatypen bit.

Jag fick inga fel på koden som jag visade, men det hände ingenting

Permalänk: https://www.webforum.nu/p/1017497

## #8 — niko, 2003-04-20T00:12Z

> Nu när den är inporterad till SQL server 2000 så är datatypen bit.

OK. Datatypen *Bit* uppfattas i FrameWorken som Boolean vilket innebär att *ToString* returnerar "True" och inte "1".

Du ska alltså skriva, helt enkelt:

```
checkBox1.Checked=(bool)dr["EjLjud"];
```

eller:

```
checkBox1.Checked=(dr["EjLjud"].ToString()=="True");
```

.. om du vill krångla till det.

Ett tips: Om du vill se vilken datatyp en kolumn motsvarar så kan du skriva:

```
System.Windows.Forms.MessageBox.Show(dr["Kolumnnamn"].GetType().ToString());
```

*Bit* i SQL-server ger då *System.Boolean*.

Permalänk: https://www.webforum.nu/p/1017514

## #9 — saw, 2003-04-20T07:08Z

Tack, efer att har hittat ett annat fel i koden, så började det att fungera bra....

Permalänk: https://www.webforum.nu/p/1017601

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/74485-checkbox-problem-i-c
