Benutzer mit den meisten Antworten
Text lesen und Bindistriche ersetzen mit eine gerade Linie

Frage
-
Hallo,
Ich lese eine Textdatei und möchte das wenn die Zeile "----" ist eine gerade Linie Zeichnen. Code:
private void btnTranslate_Click(object sender, EventArgs es) { int index = 0; string actLine = Helper.Common.GetNextLine(PageString, ref index); System.Drawing.Font boldFont = new System.Drawing.Font("Courier New", 10, System.Drawing.FontStyle.Bold); System.Drawing.Font logoFont = new System.Drawing.Font("Firma Ismi", 40, System.Drawing.FontStyle.Bold); System.Drawing.Font actFont = logoFont; System.Drawing.SizeF actSize = e.Graphics.MeasureString("s", actFont); System.Drawing.PointF actPoint = new System.Drawing.PointF(e.MarginBounds.X, e.MarginBounds.Y); if (actLine.StartsWith("---")) { //Tabelle, waagerechter Strich statt Bindestriche actSize = e.Graphics.MeasureString(" ", boldFont); e.Graphics.DrawLine( //Linie new System.Drawing.Pen(System.Drawing.Color.Black), new System.Drawing.PointF(actPoint.X + 5, actPoint.Y + 8), new System.Drawing.PointF(e.MarginBounds.Right - 35, actPoint.Y + 8) ); actPoint.Y += actSize.Height - 4; //eine Zeile runter actLine = Helper.Common.GetNextLine(PageString, ref index); if (index == 0) break; } }
Fehler: Error 2 The name 'e' does not exist in the current context
Der Fehler kommt von daher weil ich der Button Event die Funktion Graphics nicht hat.
Was könnte ich machen oder wie könnte ich das machen das ich in dem Funktion btnTranslate_Click die Bindestriche mit eine Gerade Linie ersetzen.
Schönes WE
- Bearbeitet TaMBeY Freitag, 31. August 2012 13:42
Antworten
-
Habe ich doch eigentlich alles geschireben!?
Wenn du das PaintEvent manuel auslösen willst, so rufe Invalidate() auf.
Deine Daten, die du auslesen willst, also wahrscheinlich reicht da schon der Dateiname, musst du aber dem Eventhandler irgendwie übergeben. und das geht nunmal nur mit einer Variable in der Kalsse.
Per CreateGraphics erzeugst du das Graphics-Objekt deiner Form, oder worauf auch immer du zeichnen möchtest. Damit müsstest du nicht mehr Invalidate aufrufen.
Koopakiller - http://koopakiller.ko.ohost.de/
- Als Antwort markiert TaMBeY Sonntag, 2. September 2012 07:45
Alle Antworten
-
Hallo, Ich nehme an, das das Auslesen mehr so audf den EventHandler von Paint setzt. Du könntest beispielsweise mit Invalidate das PaintEvent manuel auslösen und dirt dann deinen Code ausführen. Deinen Dateinamen müsstest du als Variable in der Klasse speichern. Alternativ Könntest du per
Graphics g = this.CreateGraphics();
an das Graphics-Objekt heran kommen. Was allerdings eher als "unsauberer" Code betrachtet wird, weil alle Zeichenaktionen in Paint stattfinden sollten.Koopakiller - http://koopakiller.ko.ohost.de/
-
Ich kanns ja auch Paint event erzeugen. Ich möchte halt wenn ich btnTranslate_Clicke auch das Event Paint gestartet wird. Weil ich in der Zeichenaktion Paint in eine PDF Datei Texte schreiben möchte und einige Texte/Linien ersetzen möchte.
Ist es möglich? Könnte ich mit dem btnTranslate_Click auch das Ereigniss Paint aufrufen?
-
Habe ich doch eigentlich alles geschireben!?
Wenn du das PaintEvent manuel auslösen willst, so rufe Invalidate() auf.
Deine Daten, die du auslesen willst, also wahrscheinlich reicht da schon der Dateiname, musst du aber dem Eventhandler irgendwie übergeben. und das geht nunmal nur mit einer Variable in der Kalsse.
Per CreateGraphics erzeugst du das Graphics-Objekt deiner Form, oder worauf auch immer du zeichnen möchtest. Damit müsstest du nicht mehr Invalidate aufrufen.
Koopakiller - http://koopakiller.ko.ohost.de/
- Als Antwort markiert TaMBeY Sonntag, 2. September 2012 07:45