14. juni 2005 - 15:45Der er
2 kommentarer og 1 løsning
Billede i textbox/combobox/listbox
Jeg skal lavet et program til en handikappet dame, som ikke kan skrive/læse normale bogstaver, men hun kan derimod et symbolsystem.
Så min plan er at hun kan klikke på et billede af modtageren i en combobox, og derefter klikke symbolerne fra en listbox, så løbende bliver indsat i textboxen sammen med symbolernes betydning.
Jeg har brug for et eksempel eller at blive peget i den rette retning.
Hvis besvarelsen er rigtig god kan der godt blive tale om flere point :-)
I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
Du kan sætte DrawMode til DrawMode.OwnerDrawFixed / DrawMode.OwnerDrawVariable
Så har din kode ansvaret for at tegne kontrollen. Du kan så tilføje en eventhandler til DrawItem event'en, som sker hver gang et item i en list-/combobox bliver tegnet.
I DrawItem event'et har du automatisk et Graphics objekt at svare på, fra den DrawItemEventArgs der følger med.
Alternativt kan du override OnPaint metoden, men netop til list- og comboboxe er ovenstående en god løsning da du får meget af funktionaliteten foræret.
Her er et eksempel fra noget kode jeg fornylig har arbejdet med:
// denne kode stammer fra konstruktoren i en klasse der nedarver fra ListBox this.DrawMode = DrawMode.OwnerDrawFixed; this.DrawItem += new DrawItemEventHandler(MarkerSelector_DrawItem);
Følgende metode tegner så hvert item: /// <summary> /// Draws each item of this MarkerSelector /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void MarkerSelector_DrawItem(object sender, DrawItemEventArgs e) { if (e.Index >= 0) { Graphics g = e.Graphics; e.DrawBackground(); string text = this.Items[e.Index].ToString(); SizeF textSize = g.MeasureString(text,this.Font); float y = e.Bounds.Top + ((e.Bounds.Height - textSize.Height)/2); float x = PAD;
//Følgende metode tegner så hvert item: /// <summary> /// Draws each item of this MarkerSelector /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void MarkerSelector_DrawItem(object sender, DrawItemEventArgs e) { if (e.Index >= 0) { Graphics g = e.Graphics; e.DrawBackground(); string text = this.comboBox1.Items[e.Index].ToString(); SizeF textSize = g.MeasureString(text,this.Font); float y = e.Bounds.Top + ((e.Bounds.Height - textSize.Height)/2); float x = PAD;
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.