Bakgrunds förg i en listbox beroende på värde. ja... Tack jag har tittat på den, men det blir problem. ok... jag hade nog gjort nåt typ av skiv-objekt (gissar att det är skivor) Det här ser kanonbra ut. jo... jag menade att du skulle göra som i länken men ersätta DrawItem metoden med den som jag skrev... Jag sitter fortfarandemed denna kod och kämpa. e.Graphics.DrawString(rita.ToString(),new Font(FontFamily.GenericSansSerif, 14, Tack Arathon. ok... vad returnerar Den ligger sparad som 1 eller 0 i databasen(bit 1) har du debuggat och sett vad "test" blir? alltid false? Nu har det lyckats för mig.Bakgrunds förg i en listbox beroende på värde.
Går det, att ha olika bakrundsfärger på en vanlig listbox (beroende på värde)?Sv: Bakgrunds förg i en listbox beroende på värde.
kolla länken: http://www.csharphelp.com/archives2/archive312.htmlSv: Bakgrunds förg i en listbox beroende på värde.
Titta här:
<code>
bool test=Convert.ToBoolean(ds1.Tables["frånTitel"].Rows[a]["hide"] );
if(test)
{
listBoxFyllTitlar.Items.Add
(ds1.Tables["frånTitel"].Rows[a]["Songtitel"].ToString());
nr[a] = ds1.Tables["frånTitel"].Rows[a]["Songtitel"].ToString();
}
else
{
listBoxFyllTitlar.Items.Add
(ds1.Tables["frånTitel"].Rows[a]["Songtitel"].ToString());
nr[a] = ds1.Tables["frånTitel"].Rows[a]["Songtitel"].ToString();
}
</code>
Om test är true, så ville jag ha endera en grå text eller en grå bakgrund.
Jag kan inte få till det med det exemplet.Sv: Bakgrunds förg i en listbox beroende på värde.
Sen hade jag implementerat en ToString-metod i den klassen som returnerar songtiteln och en property som returnerar "hide"
typ:
<code>
public class Skiva
{
private bool hide=false;
public bool Hide
{
get{return hide;}
set{hide=value;}
}
private string title="";
public Skiva(string titel, bool hide)
{
this.title=titel;
this.hide=hide;
}
public override string ToString()
{
return title;
}
}
</code>
sen i din kod hade jag gjort typ:
<code>
bool test=Convert.ToBoolean(ds1.Tables["frånTitel"].Rows[a]["hide"] );
Skiva ny=new Skiva(ds1.Tables["frånTitel"].Rows[a]["Songtitel"].ToString(),test);
listBoxFyllTitlar.Items.Add(ny);
</code>
sen i exemplet i länken hade jag gjort:
<code>
private void DrawItemHandler(object sender, DrawItemEventArgs e)
{
Skiva rita=(Skiva)listBoxFyllTitlar.Items[e.Index];
Color front;
e.DrawBackground();
e.DrawFocusRectangle();
if(rita.Hide) front=Color.Grey;
else front=Color.Black;
e.Graphics.DrawString(rita.ToString(),new Font(FontFamily.GenericSansSerif, 14, FontStyle.Bold),new SolidBrush(front,e.Bounds);
}
</code>
typ nåt såntSv: Bakgrunds förg i en listbox beroende på värde.
En fråga bara som jag inte förstod.
>sen i exemplet i länken hade jag gjort:
Vad menar du med länken?
Jag förstod inte hur du kopplade denna.
>
>
>
Har nu försökt att köra din kod men...
<code>
E:\C#\SAW\SAW\Saw.cs(512): 'System.Drawing.Color' does not contain a definition for 'Grey'
E:\C#\SAW\SAW\Saw.cs(515): Argument '2': cannot convert from 'System.Drawing.Rectangle' to 'bool'
E:\C#\SAW\SAW\Saw.cs(515): No overload for method 'DrawString' takes '3' arguments
E:\C#\SAW\SAW\Saw.cs(515): The best overloaded method match for 'System.Drawing.SolidBrush.SolidBrush(System.Drawing.Color, bool)' has some invalid arguments
</code>
Jag har råkat ut för det här tidigare, men inte hittat felet.Sv: Bakgrunds förg i en listbox beroende på värde.
Hoppas det klarnarSv: Bakgrunds förg i en listbox beroende på värde.
Jag visar först koden därefter det fel jag får:
<code>
//först så körs denna:
bool test=Convert.ToBoolean(ds1.Tables["frånTitel"].Rows[a]["hide"] );
{
Skiva ny = (new Skiva(ds1.Tables["frånTitel"].Rows[a]["Songtitel"].ToString(),test));
listBoxFyllTitlar.Items.Add(ny);}
//Därefter kommer classen skiva, sen i
//private void DrawItemHandler(object sender, DrawItemEventArgs e)
e.Graphics.DrawString(rita.ToString(),new Font(FontFamily.GenericSansSerif, 14,
FontStyle.Bold),new SolidBrush(front,e.Bounds));
//error
(515): Argument '2': cannot convert from 'System.Drawing.Rectangle' to 'bool'
(515): No overload for method 'DrawString' takes '3' arguments
(515): The best overloaded method match for 'System.Drawing.SolidBrush.SolidBrush
(System.Drawing.Color, bool)' has some invalid arguments
</code>
Där finns alltså tre fel, som jag inte kan fixa...
Sv: Bakgrunds förg i en listbox beroende på värde.
FontStyle.Bold),new SolidBrush(front),e.Bounds);
alltså du måste nog börja titta på felmeddelandena och sätta dig in i vilka parametrar som förväntas in i vilka metoder. hade du kollat i DrawString hade sett vilka parametrar som är möjliga. Hade du kollat i SolidBrush hade sett vilka parametrar som är möjliga där oxå....
hoppas det löser sig nuSv: Bakgrunds förg i en listbox beroende på värde.
Jomenvisst hadde jag försökt på alla de sätt. Jag tog ner orginalet och kollade, men fink ingen ordning på det. Det som var lustigt var ju att det som skillde var en ), men det klagade han på innan.
Nåväll, nu är det inga error, men jag är tilbaka till att få listboxen till att reagera på true/false.
Jag kör ju:
<code>
bool test=Convert.ToBoolean(ds1.Tables["frånTitel"].Rows[a]["hide"] );
</code>
Detta reagera han inte för.
Jag testade med:
<code>
listBoxFyllTitlar.Items.Add(ds1.Tables["frånTitel"].Rows[a]["hide"]);
</code>
för att kolla att han kunde läsa, och så långt är det ok.
Jag hade tidigare problem med det i en annan del och löste det då så här:
<code>
if((bool)ds1.Tables["frånTitel"].Rows[b]["hide"])
</code>
men nu får jag ingen ordning på det...Sv: Bakgrunds förg i en listbox beroende på värde.
ds1.Tables["frånTitel"].Rows[a]["hide"].ToString()?
har du testat:
<code>
bool test=Convert.ToBoolean(ds1.Tables["frånTitel"].Rows[a]["hide"].ToString() );
</code>
om det inte fungerar kan du ju sätta typ
<code>
bool test=ds1.Tables["frånTitel"].Rows[a]["hide"].ToString()=="sträng representation av true i datarade, kanske 1 eller strängen true";
</code>Sv: Bakgrunds förg i en listbox beroende på värde.
Jag får inga felmedelanden, men ingen grå text heller.Sv: Bakgrunds förg i en listbox beroende på värde.
Använder du kodförslaget jag gav dig ovan? Är hide true eller false?
Testa att sätta lite breakpoints och steppa dig igenom programmet så att du kan se vad som verkligen händer....Sv: Bakgrunds förg i en listbox beroende på värde.
Det var lite småpeteri men tack för att du tog dig tid.