Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Formatera i richTextBox

Postades av 2009-09-11 11:21:53 - Benni Svensson, i forum c# (c-sharp), Tråden har 5 Kommentarer och lästs av 905 personer

Jag har en class enl nedan.
<code>
//variabler
public Regex keyWords = new Regex("Vers: 1|Vers: 2|Vers: 3|Vers: 4|Vers: 5|Vers: 6|Vers: 7|Vers: 8|Vers: 9|Refräng:|Brygga:|");
[DllImport("user32.dll")] // import lockwindow to remove flashing
public static extern bool LockWindowUpdate (IntPtr hWndLock);
//i clasen
toolStripStatusAktion.Text = "";
try
{
this.Cursor = Cursors.WaitCursor;
LockWindowUpdate(rTBDoc.Handle);

int selPos = rTBDoc.SelectionStart;
string sFont = Class1.readReg("Dokument", "Font_titel");
Color cMt = System.Drawing.ColorTranslator.FromHtml("#" + Class1.readReg("Dokument", "Font_Color"));
int iDokumentSize = Convert.ToInt32(Class1.readReg("Dokument", "Font_Size"));
Application.DoEvents();
foreach (Match keyWordMatch in keyWords.Matches(rTBDoc.Text))
{
Application.DoEvents();
rTBDoc.Select(keyWordMatch.Index, keyWordMatch.Length);
rTBDoc.SelectionFont = new Font(sFont, 8, FontStyle.Bold);
rTBDoc.SelectionStart = selPos;
}
}
finally
{
LockWindowUpdate(IntPtr.Zero);
toolStripStatusAktion.Text = "Texten uppdaterad";
this.Cursor = Cursors.Default;
}
</code>
Detta fungerar hyffsat bra, men det finns två problem.
1) Denna kod tar ganska så lång tid att köra, trots att richtextboxen kanske bara innehåller 10 - 15 rader.
2) När jag kör den, så får den de andra kontrollerna att flicka(blinka) och det känns väldigt irriterande.

Min fråga:
Kan jag ändra någonting i koden för att få den snabbare och flickfri?
Känner ni till något allternativ?


Svara

Sv: Formatera i richTextBox

Postades av 2009-09-11 18:28:56 - André Claesson

Jag testade din kod ungefär som den är.

Ändrade:
"Vers: 1|Vers: 2|Vers: 3|Vers: 4|Vers: 5|Vers: 6|Vers: 7|Vers: 8|Vers: 9|Refräng:|Brygga:|"
Till:
"Vers: 1|Vers: 2|Vers: 3|Vers: 4|Vers: 5|Vers: 6|Vers: 7|Vers: 8|Vers: 9|Refräng:|Brygga:"

Och det blev då 4x snabbare. Du kan själv fundera ut varför :-)

Ta bort DoEvents och det blir ytterligare 10% snabbare.


Svara

Sv:Formatera i richTextBox

Postades av 2009-09-11 18:52:06 - André Claesson

Kan varje keyword förekomma mer än 1 gång?

Här är annars en kod som är 33x snabbare än den jag redan föreslaget:

            string[] keywords = new string[] {"Vers: 1", "Vers: 2", "Vers: 3", "Vers: 4", "Vers: 5", "Vers: 6", "Vers: 7", "Vers: 8", "Vers: 9", "Refräng:", "Brygga:"};

            try
            {
                this.Cursor = Cursors.WaitCursor;
                int selPos = rTBDoc.SelectionStart;
                foreach (string keyword in keywords)
                {
                    rTBDoc.Find(keyword);
                    rTBDoc.SelectionFont = new Font("Arial", 8, FontStyle.Bold);
                    rTBDoc.SelectionStart = selPos;
                }
            }
            finally
            {
                this.Cursor = Cursors.Default;
            }


Är även lätt att ändra ifall flera förekomster är möjliga.


Svara

Sv: Formatera i richTextBox

Postades av 2009-09-11 19:21:22 - Benni Svensson

Helt sagolikt tack.
Jag la till LockWindowUpdate(rTBDoc.Handle); jag inbillar mig att det flickar lite mindre då.


Svara

Sv:Formatera i richTextBox

Postades av 2009-09-11 19:25:29 - André Claesson

Om du själv vill testa optimera och mäta tiden:
[Mäta exekveringstid i C#]


Svara

Sv: Formatera i richTextBox

Postades av 2009-09-11 19:49:07 - Benni Svensson

He he det tog lite längre tid.
Ha en trevlig kväll.


Svara

Nyligen

  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper
  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak
  • 16:14 Vem anlitar man egentligen när tak
  • 16:13 Vem anlitar man egentligen när tak
  • 11:52 Noen erfaring med uttak hos Mostbe
  • 11:51 Noen erfaring med uttak hos Mostbe

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 634
27 958
271 741
471
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies