Avatar billede km2 Nybegynder
12. maj 2009 - 16:56 Der er 6 kommentarer

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();
                 
                    textbox[i].ForeColor = System.Drawing.ColorTranslator.FromOle((Int32.Parse(st)));
                }
               
                sr.Close();
                file.Close();
            }
         
            }
Avatar billede aaberg Nybegynder
13. maj 2009 - 10:16 #1
Er det noget lignende dette du mener?

string st = "Arial";

Font myFont = new Font(st, 8f); //Opretter en Font af typen arial med størelsen 8.

textbox[i].Font = myFont;
Avatar billede km2 Nybegynder
14. maj 2009 - 15:26 #2
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.
Avatar billede aaberg Nybegynder
14. maj 2009 - 15:50 #3
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.
Avatar billede km2 Nybegynder
14. maj 2009 - 16:02 #4
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.
Avatar billede km2 Nybegynder
14. maj 2009 - 16:07 #5
Det hjalp ikke det blinker meget hurtigt i nogle sekunder. Har du en ide hvad det kan være?
Avatar billede aaberg Nybegynder
15. maj 2009 - 08:25 #6
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.
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester