Hvordan indlæser man en tekst font fra en tekstfil? - Hjælp!!!
Jeg har et C# program som kan gemme sine indstillinger ned i en tekstfil. Programmet kan også hente sine indstillinger igen fra tekstfilen. Den skal kunne hente tekstfonten og også om den er fed, kursiv osv. Hvordan henter man fontens navn ind i sit program igen?Med det jeg har lavet indtil videre kan programmet indlæse om fonten er bold eller kursiv ved True og False i formatet. Men hvordan læser den også Arial ind? Det er meget vigtigt for mig. Tak. Her er formatet i tekstfilen:
0=Text0 Arial True False -2147483640
Her er programmet:
FileStream file = new FileStream(cmOpen.FileName, FileMode.Open, FileAccess.Read); StreamReader sr = new StreamReader(cmOpen.FileName); int i = 0; if (cmOpen.FileName != "") { string st; //while ((st = sr.ReadLine()) != null) for (i = 0; i < textbox.Length;i++) { st = sr.ReadLine(); position = st.IndexOf('='); if (position > 0) { st = st.Substring(position + 1); } FontStyle FS = new FontStyle(); textbox[i].Text = st; st = sr.ReadLine(); textbox[i].Font = new Font(st,Font.SizeInPoints,FontStyle.Regular,GraphicsUnit.Point); st = sr.ReadLine();
bool BO = Boolean.Parse(st); st = sr.ReadLine(); bool IT = Boolean.Parse(st); if ((BO == true && IT == false)) { FS = FontStyle.Bold; textbox[i].Font = new Font(st, Font.SizeInPoints,FS, GraphicsUnit.Point);
} if (BO == true && IT == true) { FS = FontStyle.Bold | FontStyle.Italic; textbox[i].Font = new Font(st, Font.SizeInPoints, FS, GraphicsUnit.Point); } if (BO == false && IT == true) { FS = FontStyle.Italic; textbox[i].Font = new Font(st, Font.SizeInPoints,FS, GraphicsUnit.Point); } /* if (BO == false && IT == false) { FS = FontStyle.Regular; textbox[i].Font = new Font(st, Font.SizeInPoints, FS, GraphicsUnit.Point); } */ st = sr.ReadLine();
Jeg har fundet ud af mit problem selv. Man skulle bare kunne indlæse den font som var gemt i en tekstfil på hver af mine tekstbokses tekst. Det gør den nu.
Men der er et andet C# problem du kunne hjælpe med. Jeg oplever at min form blinker meget hurtigt når den indlæser filen. Det ser ikke pænt ud. Hvordan kan man få den til at holde op med at blinke.
Jeg har selv prøvet at bruge this.Suspendlayout() og this.Resumelayout(false); og this.Doubblebuffered = true. men den gør det stadig lidt.
Jeg går ud fra at dette er noget som køre når formen bliver åbnet? Kører du det fra Load eventet på formen?
Prøv da eventuelt at flytte koden fra Load eventet til formens konstruktør. Da vil textboxene først komme frem på formen, efter at alle properties er sat.
Problemet er, at mange af de controls du bruger (eksempeltvis tekstbokse) ikke understøtter double buffer.
Jeg har en loadevent hvor jeg genererer 64 tekstbokse ind i et panel ved runtime. Den vil sagtens tegne tekstboksene og alle de andre ting på formen ved runtime. Men når jeg eksempelvis højrestiller teksten i tekstboksene og så gemmer disse indstillinger i en tekstfil så når jeg loader indstillingerne frem igen så skal teksten være højrestillet og det er der at panelet blinker meget hurtigt mens at teksten bliver højrestillet. Men jeg kan godt prøve at smide det ind i constructoren.
Det er fordi textboxene tegner sig selv, hver gang du sætter en property. Hvis det ikke virkede at putte det op i konstruktøren, er det bare SuspendLayout og ResumeLayout du kan bruge. Jeg tror dog ikke det vil fjerne flimmeret helt.
Synes godt om
Ny brugerNybegynder
Din løsning...
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.