Witam.
Zna ktoś może jakąś bibliotekę, która dodaje do kontrolki RichTextBox cechę podświetlania składni XML'a ?
Dzięki.
Witam.
Zna ktoś może jakąś bibliotekę, która dodaje do kontrolki RichTextBox cechę podświetlania składni XML'a ?
Dzięki.
Czy w kontrolce tej można łatwo podświetlać (robić tło liter) za pomocą prostej metody ? - nie pamiętam .. bo jeśli tak to samemu można napisać sobie takie coś:
using System.Text.RegularExpressions (wyrażenia regularne)
Podświetlić wszystko co odpowiada <.> (chyba dobrze napisałem), jeśli nie to <.>
Ewentualnie: http://www.google.pl/search?hl=pl&q=RichTextBox+XML+highlight&lr=
Tak nie działa ;/
Jak znaleźć wszystkie elementy xml ?
Regex regExp = new Regex(@"<[\w]+>", RegexOptions.IgnoreCase | RegexOptions.Multiline);
Match m = regExp.Match(xml);
for (int i = 0; i < m.Groups.Count; i++)
{
System.Console.WriteLine(m.Groups[i].Value);
}
Regex regExp = new Regex(@"<[\w]+>", RegexOptions.IgnoreCase | RegexOptions.Multiline);
Dodam tylko, że tym sposobem nie zaznaczysz tagów XML z atrybutem lub choćby spacją oraz zamykających <font size="4"></...</span>
Trzeba by to zmodyfikować..
<font size="4"><\w*[a-zA-Z 0-9"'=]*></span>
// teraz zaznaczysz tagi zwykłe i z atrybutem param="value" lub param='value'
<font size="4"></\w*[a-zA-Z 0-9"'=]*></span>
// to samo co wyżej ale dla zamykających
..więc w ostateczności
Regex regExp = new Regex(@"(<\w*[a-zA-Z 0-9"'=]*>)|(</\w*[a-zA-Z 0-9"'=]*>)", RegexOptions.IgnoreCase | RegexOptions.Multiline);
Hmm a masz może pomysł jak by zrobić takie podświetlanie składni XML ?
Rozumie, wyrażeniami wyszukuje elementy XML, ale nie wiem zbytnio jak to odczytywać i zapisywać bezpośrednio w kontrolce już zmienione elementy - czyli dodane kolory, żeby to tak płynnie było.
Dzięki.
http://www.google.pl/search?hl=pl&q=C%23+RichTextBox+syntax+highlight&lr=
Z przykładów, które przejrzałem jest to dość skomplikowane - ponieważ zmianę koloru fragmentu tekstu uzyskuje się przez wcześniejsze zaznaczenie go, a następnie RichTextBox.SelectionColor() i odznaczenie (sposób trochę na około), ale nie wiem jak inaczej można zmienić formatowanie fragmentu tekstu w RichTextBox (można by zajrzeć w budowę RTF).
W każdym razie działa to (słabo ale działa). Pamiętaj o ukryciu zaznaczenia przy operacji kolorowania, inaczej okienko będzie migać.
protected override void WndProc(ref System.Windows.Forms.Message m)
{
if (m.Msg == WM_PAINT)
{
if (_Paint) base.WndProc(ref m);
else
{
m.Result = IntPtr.Zero;
}
}
else
base.WndProc(ref m);
}
_Paint to zmienna (bool), która decyduje czy ma być widoczne zaznaczanie tekstu czy też nie.
Na końcu wypadało by jeszcze postawić kursor tam gdzie był przed zakolorowaniem (wszystko masz w linku, który podałem - pierwsze 5 wyszukań)