Entwickler-Ecke
C# - Die Sprache - Listbox auslesen
estrella1410 - Mo 10.12.07 10:07
Titel: Listbox auslesen
Hallo,
ich habe ein Programm geschrieben was e-mails versendet..klappt soweit ganz gut alles..nur dass ich den Inhalt, welchen ich aus einer Listbox auslese, nicht komplett in meiner Variable body, die in die E-mail reingeschriebn wird, speichern kann...es wird ja zeile für zeile ausgelesen und demnach aber immer nur die letzte zeile gespeichert...
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11:
| do { dummy2 = sr_log2.ReadLine(); lstBody.Items.Add(dummy2); dummy2 = body; } while (sr_log2.EndOfStream == false);
MailMessage dieMail = new MailMessage("abc@xyz.de", dummy, subject,body()); |
kann mir jemand da mal nen tipp geben?
Gruß,
Jessy
Moderiert von
UGrohne: Code- durch C#-Tags ersetzt
golgol - Mo 10.12.07 10:41
Hi,
du hast schon recht, dass du die immer nur Zeilenweise auslesen kannst. Du müsstest den String (ganz allgemein) mit '+=' an den existierenden anhängen (und nicht mit '=', womit du ihn einfach neu zuweist). Davon abgesehen würde ich dir davon abraten das mit Strings zu machen, da die relativ langsam sind. Verwende lieber einen StringBuilder für sowas.
Achja: Wieso schreibtst du den Text in einer ListBox? Wäre da eine multiline-TextBox nicht geschickter? (Kenne dein Vorgehen dabei ja nicht).
estrella1410 - Mo 10.12.07 11:26
Also ersteinmal danke für die antwort....
habe das mit dem += mal ungefähr so umgesetzt und es klappt jetzt...DANKE!
desweiteren nehme ich die lstbox weil es das was du erwähnt hast bei mir nicht gibt, hatte sowas gesucht aber nicht gefunden...
mit dem Stringbuilder habe ich nie zuvor gearbeitet...wie würde das denn aussehn?
Gruß,
Jessy
golgol - Mo 10.12.07 11:39
estrella1410 hat folgendes geschrieben: |
also das mit dem += läuft nicht da kommt die fehlermeldung "body" sei nicht zugewiesen ...hm... |
Also ich kenne ja nur deinen Quellcodeausschnitt, aber wenn ich das richtig verstanden habe, dann willst du doch den Inhalt der ListBox-Zeilen in der Varialben "body" speichern oder? Wenn dem so ist, dann musst du die Variable natürlich im Vorfeld deklarieren und initailisieren. Des weiteren hättest du dann nen kleinen Fehler im Quellcode: In Zeile 6 müsste es heißen:
(hier gleich mit dem '+=') Ansonsten würde in der Variablen "body" nie was ankommen.
estrella1410 hat folgendes geschrieben: |
desweiteren nehme ich die lstbox weil es das was du erwähnt hast bei mir nicht gibt, hatte sowas gesucht aber nicht gefunden... |
Du musst eine "normale" TextBox nehmen und dort in den Properties Multiline=true setzten. Das kannst du direkt über VS machen. Alternativ im Quellcode ginge das mit:
C#-Quelltext
1: 2:
| TextBox tx = new TextBox(); tx.Multiline = true; |
estrella1410 hat folgendes geschrieben: |
jez habe ich eine frage ...weil das mit dem "+=" ja nicht klappt kannst du mir bissl was zum "Stringbuilder" sagen? Wie verwendet man diese...habe zuvor nicht damit gearbeitet...! |
Ein StringBuilder kommt ganz allgemein immer dann zum Einsatz, wenn oft (und vorher in nicht genau definierter Anzahl) eine Zeichenkette an eine andere Zeichenkette angehängt werden soll. Zu genauren Funktionsweise solltest du dir am besten die MSDN-Sachen durchlesen (inkl. Beispiel):
http://msdn2.microsoft.com/de-de/library/system.text.stringbuilder(VS.80).aspx
estrella1410 - Mo 10.12.07 11:45
Danke für die Tipps!!
Jez habe ich noch eine kleine Frage ...
wie kann ich den Textinhalt in der Variable "body" in html umwandeln damit das alles so "hübsch" angezeigt wird...
myMail.BodyFormat = MailFormat.Html;<< ich weis so gibg es bei System.Web.Mail....das ist ja aber veraltet und ich nutze nun System.Net.Mail .. dort geht dies wohl irgendwie anders aber ich komme nicht drauf wie ich das ändern kann...Gruß Jessy
JüTho - Mo 10.12.07 12:38
Nach meiner Auffassung ist die SDK-Doku das wichtigste Nachschlagewerk. Wenn Du mit System.Net.Mail und MailMessage arbeitest, dann könntest Du dort auch selbst die MailMessage.BodyEncoding-Eigenschaft finden. Jürgen
estrella1410 - Mo 10.12.07 13:40
also ich habe mal meinen code hier reingepackt...das problem liegt in der variablen "body" da hilft mir dein hinweis nicht weiter!
ich kriege es nicht hin dass der den inhalt der lstbox so übernimmt wie er is also MIT leerzeilen sondern er hängt alles aneinander ...das is mein problem ..ich weis aba nicht wie ich "enter" einbauen soll...habe nun einiges versucht..über ASCII 10, 13 bis hinzu \u2305 wie unten steht....
Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51: 52: 53: 54: 55: 56: 57: 58: 59: 60: 61: 62: 63: 64: 65: 66: 67: 68: 69: 70: 71: 72: 73: 74: 75: 76: 77: 78: 79: 80: 81: 82: 83: 84: 85: 86: 87:
| using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.IO; using email.Properties; using System.Net.Mail; using System.Net.Mime;
namespace email { public partial class Form1 : Form { string name, dummy, dummy2, emailinhalt;
public Form1() {
InitializeComponent();
} private void btnAnhang_Click(object sender, EventArgs e) { //nur PDF anzeigen; PDF Datei auswählen; name = Settings.Default.name; StreamReader sr_log = new StreamReader(name);
dummy = sr_log.ReadLine(); txtbcc.Text = (dummy + ";");
openFile.Filter = "nurPDF|*.pdf";
if (openFile.ShowDialog() == DialogResult.OK) { lblanhang.Text = ("Folgende Datei wurde angehängt: " + openFile.FileName); lblanhang.Visible = true; } }
private void btnSenden_Click_1(object sender, EventArgs e) {
emailinhalt = Settings.Default.emailinhalt; StreamReader sr_log2 = new StreamReader(emailinhalt); string subject = txtbetreff.Text; string body = dummy2 ;
// char[] crlf = { (char)13, (char)(10) };
do { dummy2 = sr_log2.ReadLine();
//if (dummy2 == "") //{ // dummy2 = Environment.NewLine; //} lstBody.Items.Add(dummy2); body = body + (dummy2 +(char)'\u2305'); } while (sr_log2.EndOfStream == false);
MailMessage dieMail = new MailMessage("xya@web.de", dummy, subject, body); body = dieMail.Body;
dieMail.Attachments.Add(new Attachment(openFile.FileName.ToString())); //dieMail.IsBodyHtml =true; //string someArrows = new string(new char[] { '\u2190', '\u2191', '\u2192' ,'\u2305'}); //dieMail.Body += Environment.NewLine + someArrows; //dieMail.BodyEncoding = System.Text.Encoding.UTF8;
SmtpClient Server = new SmtpClient("abc@def.loc"); Server.Send(dieMail);
} } } |
Christian S. - Mo 10.12.07 13:42
Hallo!
Da die ursprüngliche Frage erledigt ist, mache ich hier mal zu. Bitte erstelle für eine neue Frage auch einen neuen Thread. Danke! :-)
Grüße
Christian
P.S.: Bitte nutze für C#-Code die cs-Tags anstatt der code-Tags.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!