Icaro2 Skrevet 19. oktober 2010 Del Skrevet 19. oktober 2010 Hei Jeg trodde dette skulle være en enkel sak men dengang ei,denne kontrollen er ikke som andre kontroller ser det ut til. virker som den har noen mangler ;-) det jeg prøver på er at jeg har en menybar/toolbar øverst i programmet som jeg har en dropdown button i og under denne så har jeg en del items Je skulle hatt tilgang til en spesiell del av denne kontrollen nemlig muligheten til å sette en hake ved et valgt item i denne listen men denne er ikke mulig å komme til via kode kun vis en manuelt setter denne i designeren Jeg vil via kode ha muligheten til å sette en hake slik Og jeg har prøvd denne koden for å få det til og jeg får tak i det meste av kontrollen men den har ikke mulighet til å sette eller fjerne haken ser det ut til foreach (ToolStripDropDownItem fontItem in this.cmFontSizes.DropDownItems) { fontItem.Checked = true; } Lenke til kommentar
Icaro2 Skrevet 20. oktober 2010 Forfatter Del Skrevet 20. oktober 2010 (endret) Det var vist enkelt å få til bare jeg brukte riktig referanse Riktig kode er foreach (ToolStripMenuItem fontItem in this.cmFontSizes.DropDownItems) { if (fontItem.Text == "48") { fontItem.Checked = true; } else { fontItem.Checked = false; } } Mulig det finnes en greiere måte en if men det duger Endret 20. oktober 2010 av Icaro2 Lenke til kommentar
GeirGrusom Skrevet 20. oktober 2010 Del Skrevet 20. oktober 2010 Alle ting som er repetative å gjøre burde du gjøre med kode, ikke med designeren. Hvis du har en kode som ser slik ut som den over har du gjort noe alt for vanskelig for deg selv. Lenke til kommentar
Icaro2 Skrevet 20. oktober 2010 Forfatter Del Skrevet 20. oktober 2010 Alle ting som er repetative å gjøre burde du gjøre med kode, ikke med designeren. Hvis du har en kode som ser slik ut som den over har du gjort noe alt for vanskelig for deg selv. Hei og takk for innspill Jeg er ikke dreven i dette og vet at jeg gjør ting vankeligere en det burde være men jeg klarer ikke helt å se den åpenbare løsningen Det at jeg bruker if til slike ting innbiller jeg meg at programmet vil bruke mere resurser da den må sjekke hver ting men hvordan ser en mer optimal løsning ut til koden ovenfor? Det som jeg prøver meg på er en tekst editor med richtextbox som utgangspunkt og størrelsen på fonten skal gjenspeile seg i dropdown lista etter hvor jeg er eller har valgt i textboxen. Jeg er åpen for å lære Lenke til kommentar
Icaro2 Skrevet 21. oktober 2010 Forfatter Del Skrevet 21. oktober 2010 Alle ting som er repetative å gjøre burde du gjøre med kode, ikke med designeren. Hei igjen Begynte å tenke litt på denne setningen og er det slik at jeg burde legge til denne knappen med kode og generere den på nytt med riktig innhold hver gang den åpnes? eller tolket jeg det helt feil nå Lenke til kommentar
Icaro2 Skrevet 21. oktober 2010 Forfatter Del Skrevet 21. oktober 2010 Beklager vis jeg poster for mye men jeg prøvde meg frem på å bygge opp menyen hver gang det er behov for å vise den Font størrelsen spares i en variabel(txtsize) etter hvert som jeg flytter eller markerer noe i richtekstboxen. Standard er 10 I koden for Dropdown knappen så har jeg dette (finnes ingenting i lista foreløpig før jeg klikker på knappen) private void ddbFontSize_DropDownOpening(object sender, EventArgs e) { UpdateFontSize((int)txtSize, this.ddbFontSize); } Dette kjører denne koden for å bygge opp og markerer riktig i lista private void UpdateFontSize(int size, ToolStripDropDownButton dropButton) { dropButton.DropDownItems.Clear(); for (int i = 0; i < 15; i++) { ToolStripMenuItem item = (ToolStripMenuItem)ddbFontSize.DropDownItems.Add(clsRtf.FontSize[i].ToString()); if (size == clsRtf.FontSize[i]) item.Checked = true; item.CheckOnClick = true; item.Click += new EventHandler(HandleFontSizeClick); } } Koden som genererer click og setter ny font i editoren er denne void HandleFontSizeClick(object sender, EventArgs e) { ToolStripItem item = (ToolStripItem)sender; ChangeFontSize(float.Parse(item.Text)); } Fontstørrelser har jeg lagt i en intern classe slik class clsRtf { public static int[] FontSize = new int[16] { 8, 9, 10, 11, 12, 14, 16, 18, 20, 22, 24, 26, 28, 36, 48, 72 }; } Er det fremdeles mot sun fornuft dette eller var det noe slik som var ment Lenke til kommentar
GeirGrusom Skrevet 24. oktober 2010 Del Skrevet 24. oktober 2010 Kjør denne koden én gang når programmet starter, og jeg tror løsningen din er så bra den kan bli Bruk gjerne static readonly på verdier som kun skal leses, dette er bittelitt kjappere enn uten av en eller annen grunn. Lenke til kommentar
Icaro2 Skrevet 24. oktober 2010 Forfatter Del Skrevet 24. oktober 2010 Tusen takk for innspill, godt å ha noen som kan peke oss i riktig retning Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå