fastcoloredtextbox - rot unterstreichen
- VB.NET
Sie verwenden einen veralteten Browser (%browser%) mit Sicherheitsschwachstellen und können nicht alle Funktionen dieser Webseite nutzen.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Hier erfahren Sie, wie einfach Sie Ihren Browser aktualisieren können.
Es gibt 14 Antworten in diesem Thema. Der letzte Beitrag () ist von filmee24.
-
-
-
-
Da wirst du dir wohl einen eigenen UnderLineStyle schreiben müssen, der von Style erbt - hab jdfs. bisher nix gefunden, was sowas täte.
-
-
filmee24 schrieb:
nur leider hab ich kein plan
Spoiler anzeigen VB.NET-Quellcode
- Private Sub Form1_Paint(sender As System.Object, e As System.Windows.Forms.PaintEventArgs) Handles MyBase.Paint
- Dim x As Single = 50
- Dim y As Single = 50
- Dim txt = "bla"
- Dim ft = Me.Font
- Dim sz As SizeF = e.Graphics.MeasureString(txt, ft)
- e.Graphics.DrawString(txt, ft, Brushes.Black, New PointF(x, y))
- e.Graphics.DrawLine(Pens.Red, New PointF(x, y + sz.Height), New PointF(x + sz.Width, y + sz.Height))
- End Sub
Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! -
ich habe diesen code:
VB.NET-Quellcode
- Imports FastColoredTextBoxNS
- Public Class UnderlineStyle
- Inherits Style
- Public Overrides Sub Draw(gr As System.Drawing.Graphics, position As System.Drawing.Point, range As FastColoredTextBoxNS.Range)
- For index = range.Start.iChar To range.End.iChar
- Dim x As Single = position.X
- Dim y As Single = position.Y
- Dim line As Line = range.tb(range.Start.iLine)
- Dim txt = line(index).c.ToString
- Dim ft = range.tb.Font
- Dim sz As SizeF = gr.MeasureString(txt, ft)
- ' gr.DrawString(txt, ft, Brushes.Black, New PointF(x, y))
- Dim num1 As Single = CType(range.tb.CharWidth, Single)
- Dim num2 As Single = CType((position.X _
- - (range.tb.CharWidth / 3)), Single)
- gr.DrawLine(Pens.Red, New PointF(x, y + sz.Height), New PointF(x + sz.Width, y + sz.Height))
- num2 = (num2 + num1)
- Next
- End Sub
- End Class
aber es kommt das fehlerbild -
filmee24 schrieb:
aber es kommt das fehlerbildFalls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! -
-
Da musste mal in Deine Paint-Routine rein-debuggen.
Da wird iwo eine Exception geschmissen, das musst Du aufklären.
Aber nicht mit Try-Catch!Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! -
-
Das ist debuggen. Musste lernen.
Schick mal Deine Paint-Routine.Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch
Ein guter .NET-Snippetkonverter (der ist verfügbar).
Programmierfragen über PN / Konversation werden ignoriert! -
habe keine paint routine,hä
habe das:VB.NET-Quellcode
- Imports FastColoredTextBoxNS
- Public Class UnderlineStyle
- Inherits Style
- Public Overrides Sub Draw(gr As System.Drawing.Graphics, position As System.Drawing.Point, range As FastColoredTextBoxNS.Range)
- For index = range.Start.iChar To range.End.iChar
- Dim x As Single = position.X
- Dim y As Single = position.Y
- Dim line As Line = range.tb(range.Start.iLine)
- Dim txt = line(index).c.ToString
- Dim ft = range.tb.Font
- Dim sz As SizeF = gr.MeasureString(txt, ft)
- ' gr.DrawString(txt, ft, Brushes.Black, New PointF(x, y))
- Dim num1 As Single = CType(range.tb.CharWidth, Single)
- Dim num2 As Single = CType((position.X _
- - (range.tb.CharWidth / 3)), Single)
- gr.DrawLine(Pens.Red, New PointF(x, y + sz.Height), New PointF(x + sz.Width, y + sz.Height))
- num2 = (num2 + num1)
- Next
- End Sub
- End Class
und die verwendung: editor.Keywords.Add(New SyntaxItem("under", editor.getStyle("UNDERLINED")))
und im textchanged event werden die styles benutzt -
also ich hab gleich 2 neue Styles erfunden, einen DelegateStyle und einen OwnerDrawStyle (die prinzipiell das gleiche machen, nämlich das Zeichnen delegieren).
Ich denke, mit dem OwnerDrawStyle kommt man leichter klar, wenn man schonmal ein Paint-Event behandelt hat.
Also hier die Styles:C-Quellcode
- public class OwnerDrawStyle : Style {
- public class EventArg : EventArgs {
- public Graphics Graphics; public Rectangle Rect; public Range Range;
- public EventArg(Graphics gr, Rectangle rct, Range rng) { Graphics = gr; Rect = rct; Range = rng; }
- }
- public event EventHandler<EventArg> Paint;
- public override void Draw(Graphics gr, Point pos, Range range) {
- if(Paint != null) Paint(this, new EventArg(gr, new Rectangle(pos, GetSizeOfRange(range)), range));
- }
- }
- public class DelegateStyle : Style {
- private Action<Graphics, Rectangle> _Draw;
- public DelegateStyle(Action<Graphics, Rectangle> draw) { _Draw = draw; }
- public override void Draw(Graphics gr, Point pos, Range range) { _Draw(gr, new Rectangle(pos, GetSizeOfRange(range))); }
- }
Im MarkerTestForm habichdann sowas:VB.NET-Quellcode
- Private WithEvents _RedUnderlined As New OwnerDrawStyle
- Private Sub _RedUnderlined_Paint(ByVal sender As Object, ByVal e As OwnerDrawStyle.EventArg) Handles _RedUnderlined.Paint
- With e.Rect
- e.Graphics.DrawLine(Pens.YellowGreen, .X, .Bottom - 1, .Right, .Bottom - 1)
- End With
- End Sub
- 'Private _RedUnderlined As New DelegateStyle( _
- ' Sub(gr, rct) gr.DrawLine(Pens.Red, rct.X, rct.Bottom - 1, rct.Right, rct.Bottom - 1))
-
danke, ich hab es so gemacht:
VB.NET-Quellcode
- Imports FastColoredTextBoxNS
- Public Class UnderlineStyle
- Inherits Style
- Public Overrides Sub Draw(gr As System.Drawing.Graphics, position As System.Drawing.Point, range As FastColoredTextBoxNS.Range)
- Dim size As Size = GetSizeOfRange(range)
- Dim rect As Rectangle = New Rectangle(position, size)
- With rect
- gr.DrawLine(Pens.YellowGreen, .X, .Bottom - 1, .Right, .Bottom - 1)
- End With
- End Sub
- End Class
-
Ähnliche Themen
-
blackbox495 - - Sonstige Problemstellungen
-
4 Benutzer haben hier geschrieben
- Gast (8)
- RodFromGermany (4)
- ErfinderDesRades (2)
- Gather (1)