Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Portal
  • |
  • Mitglieder
Beiträge von theSoulT
Thema: Datenbindung zwischen mehreren Seiten
Am im Forum: GUI: WPF und XAML

Hallo zusammen,

ich hoffe ihr könnt mir hier etwas weiterhelfen. Ich möchte eine Datenbindung zwischen mehreren Pages erstellen. Ich habe auf der Seite "infos" eine Textbox. Auf meiner MainWindow Page soll ein Label den Inhalt der Textbox anzeigen. Mit unterschiedlichen Buttons kann man zwischen den Seiten wechseln.

Hier sind meine Codeteile:
MainWindow.cs


    public partial class MainWindow : Window
    {
        Person person1;
        public MainWindow()
        {
            InitializeComponent();
            person1 = new Person()
            {
                Name = "John Doe",
                City = "CiytNumberOne"
            };
            this.DataContext = person1;
        }

        private void btnDashboard_Click(object sender, RoutedEventArgs e)
        {
            PageHolder.Content = new dashboard();
        }

        private void Infos_Click(object sender, RoutedEventArgs e)
        {
            PageHolder.Content = new infos();
        }
    }

Person.cs


class Person : INotifyPropertyChanged
    {
        private string _name;
        private string _city;
        public string Name
        {
            get { return _name; }
            set
            {
                _name = value;
                OnPropertyChanged("Name");
            }
        }
        public string City
        {
            get { return _city; }
            set
            {
                _city = value;
                OnPropertyChanged("City");
            }
        }

        public event PropertyChangedEventHandler PropertyChanged;

        private void OnPropertyChanged(string info)
        {
            if (PropertyChanged != null)
                PropertyChanged(this, new PropertyChangedEventArgs(info));
        }
    }

MainWindow.xaml

<Grid>
        <StackPanel>
            <StackPanel Orientation="Horizontal">
                <Button x:Name="Infos" Content="Infos" Margin="10 0" Click="Infos_Click"/>
                <Button x:Name="btnDashboard" Content="Dashboard" Margin="10 0" Click="btnDashboard_Click"/>
            </StackPanel>
            <Label Content="Name:"/>
            <Label Content="{Binding Name}"/>
            <Separator/>
            <Frame x:Name="PageHolder" Source="infos.xaml" NavigationUIVisibility="Hidden" />
        </StackPanel>
    </Grid>

Könnt ihr mir hier bitte weiterhelfen bei der Datenbindung?

Thema: Wieso erkennt Filter eingegebenes Datum nicht korrekt?
Am im Forum: Office-Technologien

Danke Taipi88, der Tipp war goldrichtig! Man muss das Datum als double übergeben und nicht als formatierten String. So hab ich es jetzt:


DateTime odate = DateTime.Today;
excelWs.Cells[column, 8] = odate.ToOADate();
excelWs.Range["H" + column].NumberFormat = "m/d/yyyy";

Da das Datum dann trotzdem im falschen Format war, hab ich das o.g. NumberFormat gesetzt.
Das hab ich über ein Makro ausgelesen. Komischerweise ist dieses Format Tag.Monat.Jahr.

Also nochmals danke an euch

Thema: Wieso erkennt Filter eingegebenes Datum nicht korrekt?
Am im Forum: Office-Technologien

Also ich hab jetzt auf deinen Hinweis hin, den Code aus der OpenXML SDK kopiert, um zu testen, wie es hier läuft.
Auch auf diesem Weg hab ich genau das selbe Fehlerbild mit dem Filter.

Thema: Wieso erkennt Filter eingegebenes Datum nicht korrekt?
Am im Forum: Office-Technologien

Ich hab dazu unter Zelle formatieren geschaut. Dort gibt es ja Datumsformate. Hab mal einen Screenshot angehangen.
Mit deinem Vorschlag yyyy-mm-dd klappt es leider auch nicht.

Das ist so ärgerlich... Der Text steht eigentlich richtig drin, wird nur nicht korrekt erfasst von Excel

Thema: Wieso erkennt Filter eingegebenes Datum nicht korrekt?
Am im Forum: Office-Technologien

Hallo Abt,

ich hab es auch schon so getestet:


excelWs.Range["H" + column].NumberFormatLocal = "TT.MM.JJJJ";

Leider das selbe Problem weiterhin

Thema: Wieso erkennt Filter eingegebenes Datum nicht korrekt?
Am im Forum: Office-Technologien

Hallo zusammen,

ich hänge an einem kleinen Problem, was ich mithilfe der Suche und Google leider nicht lösen konnte.

Ich habe ein kleines Programm geschrieben, was in einer Excel-Tabelle das aktuelle Datum einträgt. Dieses wird auch ohne Probleme eingetragen. Leider hat Excel hier aber ein Problem mit der Filterfunktion.
Diese trennt die einzelnen Datumsteile nicht auf. Um das kurz zu erklären:
Trägt man von Hand ein Datum ein, erkennt der Filter dieses und spaltet auf in Jahr, Monat und Tag. Dann kann man zum Beispiel alle Einträge aus 2020 anzeigen lassen.

Wenn ich mit meinem Programm das Datum eintrage, wird es als komplettes Datum im Filter angezeigt. Dies kann manuell behoben werden über einen Doppelklick und ein Enter in die entsprechende Zelle.
Das ist aber ein manueller Eingriff und eigentlich unerwünscht.

Ich habe das ganze schon versucht zu lösen mit NumberFormat, was aber leider auch nicht geholfen hat. Hier mal mein Codeausschnitt:

                        
int column = LastColumn();

string[] splitData = txt_Daten.Text.Split();

excelWs.Cells[column, 3] = splitData[2];
excelWs.Cells[column, 2] = splitData[1];
excelWs.Cells[column, 1] = splitData[0];
excelWs.Cells[column, 4] = txt_Fert.Text;
excelWs.Cells[column, 8] = DateTime.Now.ToShortDateString();
excelWs.Range["H" + column].NumberFormat = "MM/DD/YYYY";
excelWs.Cells[column, 9] = DateTime.Now.ToShortTimeString();

Im Anhang noch ein Screenshot von dem Filter. Die letzte Zeile davon sollte eigentlich oben mit einsortiert werden.
Ich hoffe ihr habt eine Idee und könnt mir helfen?

Thema: Speichern einer List<object> nach dem Beenden der App
Am im Forum: Cross Platform Entwicklung - Mobile und IoT

Hallo Abt,

ja ich meinte vor dem Beenden tut mir leid.

Du hast richtig getippt, ich arbeite mit XAMARIN.
Meinst du mit Elementen die Elemente der Liste?
Also ich habe ja eine Liste mit Personen. Diese Personen enthalten jeweils den Vor und Nachnamen und das Geschlecht.

Das heißt ich muss die Personen speichern?

Benötige ich dafür SQL?

Ich find leider nichts passendes für mich im Internet X(

Thema: Speichern einer List<object> nach dem Beenden der App
Am im Forum: Cross Platform Entwicklung - Mobile und IoT

Hallo zusammen,
ich habe mal wieder ein Problem bei einem meiner Projekte.
Ich möchte eine App mit einer ListView erstellen.
Diese ListView wird von Usereingaben gefüttert und soll nach dem Beenden der App bei einem erneuten Aufruf wieder zur Verfügung stehen. Die ListView besteht aus mehreren Objekten "Person".
Ich bin bei meiner Recherche auf die SharedPreferences gestoßen.
Hier kann man aber leider keine List speichern.
Oder doch?
Könnt Ihr mir hier weiterhelfen?

Liebe Grüße
thesoult

Thema: Links aus einer Seite mit dem HtmlAgilityPack auslesen
Am im Forum: Web-Technologien

Ich habe jetzt mal per HttpWebRequest mir den Code der Website auslesen lassen:


private void button1_Click(object sender, EventArgs e)
        {
            string url = "https://www.pilz.com/de-INT/search#SEARCH=772100&pilz_group_type=";
            
            HttpWebRequest myHttpWebRequest = (HttpWebRequest)WebRequest.Create(url);
            
            HttpWebResponse myHttpWebResponse = (HttpWebResponse)myHttpWebRequest.GetResponse();
            
            Stream receiveStream = myHttpWebResponse.GetResponseStream();
            Encoding encode = System.Text.Encoding.GetEncoding("utf-8");
            
            StreamReader readStream = new StreamReader(receiveStream, encode);
            Console.WriteLine("\r\nResponse stream received.");
            Char[] read = new Char[256];
            
            int count = readStream.Read(read, 0, 256);
            Console.WriteLine("HTML...\r\n");
            while (count > 0)
            {
                String str = new String(read, 0, count);
                Console.Write(str);
                count = readStream.Read(read, 0, 256);
            }
            Console.WriteLine("");
            
            myHttpWebResponse.Close();
            readStream.Close();
        }

Das Ergebnis war unter anderem:
<form class="treffer">
                            Anzahl der Suchergebnisse <span id="pilz-fts-search-result-amount">123</span>
                            <select id="resultsPerPage" size="1" title="Ergebnisse pro Seite">
                                <option value="10">10</option>
                                <option value="20">20</option>
                                <option value="30">30</option>
                                <option value="40">40</option>
                                <option value="50">50</option>
                            </select>
                        </form>
                        <div id="pilz-fts-search-results-container"></div>
                    </div>
                    <nav>
                        <ul class="pagination" id="pilz-fts-search-pagination-container">
wobei hier ja die Zeile
                        <div id="pilz-fts-search-results-container"></div>
interessant ist. Hier scheint es so, als ob der Bereich dazwischen nicht existiert.
Gerade ist mir ausfgefallen, das wenn ich die Website untersuche und über den Debugger rein geh, sieht es identisch aus wie oben. Über den DOM-Explorer sind allerdings zwischen <div id="pilz-fts-search-results-container"> und </div> noch die Links, welche ich benötige 8o

Thema: Links aus einer Seite mit dem HtmlAgilityPack auslesen
Am im Forum: Web-Technologien

Ich bin dabei, aber weiß allerdings nicht nach was ich genau suchen soll ?(

Thema: Links aus einer Seite mit dem HtmlAgilityPack auslesen
Am im Forum: Web-Technologien

Hallo Abt,

mein Debugger sagt: "att" war "null".
Und link.Attributes["href"] ist ebenfalls null.

Thema: Links aus einer Seite mit dem HtmlAgilityPack auslesen
Am im Forum: Web-Technologien

Hallo Abt,
danke für die schnelle Rückmeldung.

Das a[2] hab ich auch schon weggelassen.
Dann ist die NullReferenceException an der Stelle weg, allerdings findet er keine Links und gibt mir bei

                if (att.Value.Contains("#"))
eine NullReferenceException, weil keine Links hier vorhanden sind.

X(

Thema: Links aus einer Seite mit dem HtmlAgilityPack auslesen
Am im Forum: Web-Technologien

Halo zusammen,

ich benötige mal wieder eure Hilfe
Nach tagelanger Suche bin ich leider mit meinem Programm noch am Anfang, weil ich hier nicht weiter komme.
Ich möchte von einer Website alle Links auslesen.
Dies habe ich mit folgendem Code versucht:

private void button1_Click(object sender, EventArgs e)
        {
            var url = "https://www.pilz.com/de-DE/search#SEARCH=772100&pilz_group_type=";
            var web = new HtmlWeb();
            var doc = web.Load(url);

            var node = doc.DocumentNode.SelectNodes("//*[@id=\"pilz-fts-search-results-container\"]/a[2]");

            foreach (HtmlNode link in doc.DocumentNode.SelectNodes("//*[@id=\"pilz-fts-search-results-container\"]/a[2]"))
            {
                HtmlAttribute att = link.Attributes["href"];
                if (att.Value.Contains("#"))
                {
                    string[] substring = att.Value.Split('#');
                    Console.ForegroundColor = ConsoleColor.Blue;
                    Console.Write(substring[0]);
                    Console.ReadLine();
                }
                else
                {
                    Console.ForegroundColor = ConsoleColor.Blue;
                    Console.WriteLine(att.Value);
                    Console.ReadLine();
                }
            }
        }
In der foreach-Schleife bekomm ich ein NullException-Error.
Deshalb habe ich die var node erstellt, um zu sehen ob ich null bekomme, was hier der Fall ist.
Könnt Ihr mir sagen was an dem XPATH nicht in Ordnung ist?

Hier noch der Link zur Website:
https://www.pilz.com/de-DE/search#currentPage=1&SEARCH=772100&search_connector=and

Wenn es genauer geht mit den Links:
Ich möchte die Links in der Mitte haben (Wo ein Pfeil davor ist)

Ich hoffe ihr könnt mir helfen

Grüße
theSoulT

Thema: Nach x Zeichen autom. Zeilenumbruch in Multiline-Textbox jedoch Wörter nicht trennen
Am im Forum: Rund um die Programmierung

Zitat
Im Sinne der Wiederverwendbar- und Testbakeit ist es besser, wenn Deine Methode keine Abhängigkeit an die UI und damit keine Abhängigkeit an die Textbox hätte; sondern wie meine Vorlage einen String annimmt und einen zurück gibt.

Du hast recht, das muss ich noch anpassen. Danke dir!

Thema: Nach x Zeichen autom. Zeilenumbruch in Multiline-Textbox jedoch Wörter nicht trennen
Am im Forum: Rund um die Programmierung

Hab es hinbekommen. Danke für deinen Ansatz!
Hier noch mein Code, falls jemand anderes noch die selben Probleme hat:

        private void textBox1_TextChanged(object sender, EventArgs e)
        {
            if (counter == 0)
                Blockformat(textBox1, 40);
        }

        public void Blockformat(TextBox source, int maxCharsPerLine)
        {
            string gesamttext = source.Text;
            string zeile = "";
            int lastSpace;
            List<string> satz = new List<string>();

            counter = 1;
            if (gesamttext.Length ≥ maxCharsPerLine)
            {
                while (gesamttext.Length > 0)
                {
                    int min = Math.Min(gesamttext.Length, maxCharsPerLine);
                    zeile = gesamttext.Substring(0, min);
                    lastSpace = zeile.LastIndexOf(" ") + 1;

                    if (lastSpace > 0)
                    {
                        if (gesamttext.Length > maxCharsPerLine)
                        {
                            zeile = gesamttext.Substring(0, lastSpace);
                            gesamttext = gesamttext.Substring(lastSpace).Replace(Environment.NewLine, "");
                        }
                        else
                            gesamttext = "";
                        satz.Add(zeile);
                    }
                    else
                    {
                        zeile = gesamttext.Substring(0, min);
                        if (zeile != "")
                            satz.Add(zeile);
                        gesamttext = gesamttext.Substring(min).Replace(Environment.NewLine, "");
                    }
                }
                source.Text = "";
                foreach (string s in satz)
                {
                    source.Text += s + Environment.NewLine;
                }
                source.Text = source.Text.Substring(0, source.Text.Length - Environment.NewLine.Length);
                source.SelectionStart = source.Text.Length;
                source.ScrollToCaret();
            }

            counter = 0;
        }

Thema: Nach x Zeichen autom. Zeilenumbruch in Multiline-Textbox jedoch Wörter nicht trennen
Am im Forum: Rund um die Programmierung

Servus und danke erstmal für deinen Vorschlag.
Das Problem ist nur das es in jeder Zeile überprüft werden soll. Und damit hab ich meine Probleme ;(

Thema: Nach x Zeichen autom. Zeilenumbruch in Multiline-Textbox jedoch Wörter nicht trennen
Am im Forum: Rund um die Programmierung

Mein Problem ist folgendes:
ich müsste Zeile für Zeile kontrollieren, ob mehr als 72 Zeichen stehen. Wenn ja dann sollen alle worte über 72 in die nächste Zeile geschrieben werden.

Ich hätte das jetzt mit foreach(string lines in TextBox1.Lines) gemacht.
Allerdings ist hier das Problem das ich dann lines nichts zuweisen kann.

            
 private void textBox1_TextChanged(object sender, EventArgs e)
        {
         foreach (string lines in textBox1.Lines)
            {
                string[] zeile = lines.Split();
                char[] buchstaben = lines.ToCharArray();
                int count = 0;
                int lastWord = 0;

                if (buchstaben.Length > maxCount)
                {
                    for (int i = 0; i < zeile.Length; i++)
                    {
                        if (count < maxCount)
                        {
                            count += zeile[i].Length;
                        }
                        else
                        {
                            lastWord = i;
                            break;
                        }
                    }
                    for(int i = 0; i < lastWord; i++)
                    {
                        gesamttext += zeile[i] + " ";
                    }
                    gesamttext += Environment.NewLine;
                    for(int i = lastWord; i < zeile.Length; i++)
                    {
                        gesamttext += zeile[i] + " ";
                    }
                    textBox1.Text = gesamttext;
                }
            }
        }

Das hier ist mein aktueller Versuch, aber das klappt leider auch nicht so ganz :(

Thema: Nach x Zeichen autom. Zeilenumbruch in Multiline-Textbox jedoch Wörter nicht trennen
Am im Forum: Rund um die Programmierung

Hallo zusammen,

ich benötige mal wieder eure Hilfe,
ich komme einfach nicht weiter. Für ein Projekt benötige ich einen automatischen Zeilenumbruch. Das heißt ich schreibe in einer Multiline-TextBox meinen Text. Es sollen in jeder Zeile maximal 72 Zeichen stehen. Das heißt wenn ein Wort bei 70 anfängt und über 72 geht soll das ganze Wort in die nächste Zeile geschrieben werden. Leider bekomme ich das nicht hin. Habt ihr da einen Ansatz? Oder gibt es für TextBoxen schon Einstellungsmöglichkeiten für die maximale Anzahl pro Zeile?

Thema: SAP Verbindung mit SAPFEWSELib
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Zitat von GarlandGreene
ist zwar unwahrscheinlich, aber ist das ein frisch installierter SAP GUI 7.50? Dann könnte einmal neustarten ausreichen. Das Ding hat nach der Installation ein paar Grafikfehler, die nach dem Neustart aber weg sind.

Servus GarlandGreene,

nein ist nicht neu installiert
Wenn ich SAP normal starte, ist die Ansicht auch normal.
Das muss an dem Code liegen ;(

Thema: SAP Verbindung mit SAPFEWSELib
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Zitat
Du hast eine Konsolenapplikation erstellt, und darin läuft dann keine Nachrichtenbearbeitungsschleife (message queue).
Probiere mal z.B. eine WinForms-Applikation.

Habe ich auch schon versucht, leider ohne Erfolg. Echt ärgerlich ;(

Thema: SAP Verbindung mit SAPFEWSELib
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hallo zusammen,
ich bin grade dabei eine Verbindung von einer Userform ins SAP zu erstellen.
Mit meinem momentanen Code bekomme ich auch eine Verbindung, allerdings ist das SAP Fenster in einer komischen Ansicht (Buttons werden zum Beispiel nicht angezeigt) Siehe Screenshot. Weiß jemand woran das liegt?
Hier meine Main:

public static void Main(string[] args)
        {
            SAPActive.openSAP("R3Q ECC Testsystem EHP8");
            SAPActive.login("001", "user", "pw", "DE");
            SAPActive.SapSession.StartTransaction("CS12");
        }

Dazu die zwei Funktionen:

       public static void login(string myclient, string mylogin, string mypass, string mylang)
        {
            GuiTextField client = (GuiTextField)SAPActive.SapSession.ActiveWindow.FindByName("RSYST-MANDT", "GuiTextField");
            GuiTextField login = (GuiTextField)SAPActive.SapSession.ActiveWindow.FindByName("RSYST-BNAME", "GuiTextField");
            GuiTextField pass = (GuiTextField)SAPActive.SapSession.ActiveWindow.FindByName("RSYST-BCODE", "GuiPasswordField");
            GuiTextField language = (GuiTextField)SAPActive.SapSession.ActiveWindow.FindByName("RSYST-LANGU", "GuiTextField");
    
            client.SetFocus();
            client.Text = myclient;
            login.SetFocus();
            login.Text = mylogin;
            pass.SetFocus();
            pass.Text = mypass;
            language.SetFocus();
            language.Text = mylang;
    
            //Press the green checkmark button which is about the same as the enter key 
            GuiButton btn = (GuiButton)SapSession.FindById("/app/con[0]/ses[0]/wnd[0]/tbar[0]/btn[0]");
            btn.SetFocus();
            btn.Press();
    
        }

        public static void openSAP(string env)
        {
            SAPActive.SapGuiApp = new GuiApplication();
            string connectString = null;
            if (env.ToUpper().Equals("DEFAULT"))
            {
                connectString = "R3Q ECC Testsystem EHP8";
            }
            else
            {
                connectString = env;
            }
            SAPActive.SapConnection = SAPActive.SapGuiApp.OpenConnection(connectString, Sync: true);     
            SAPActive.SapSession = (GuiSession)SAPActive.SapConnection.Sessions.Item(0);   }

Die Buttons sind allerdings vorhanden. Wenn man lange genug mit der Maus über dem Button sit, erscheint ein Tooltip und der Button funktioniert dann auch. Ich hab ehct keine Ahnung woran das liegt :(

Liebe Grüße TheSoulT

Thema: Allgemeiner Fehler in der GDI+
Am im Forum: Grafik und Sound

Zitat
daran sieht man aber leider immer noch nicht, wo das Image herkommt, und auch nicht, wie es geladen wird

Hier wird das Bild geladen:

        private void FrmOp_AcceptOpenFrame(string sFile)
        {
            tabControl1.Visible = true;
            btnPreview.Visible = true;
            lblChoice.Visible = false;
            btnSave.Visible = true;

            Kontakt k = new Kontakt();
            k = Kontakt.OpenContact(sFile,sKey,sIv);
            this.txtName.Text = k.sName;
            this.txtFirstName.Text = k.sFirstName;
            this.txtTitel.Text = k.sTitel;
            this.txtSpitzname.Text = k.sSpitzname;
            if (k.bIsFemale)
            {
                this.rbtnFemale.Checked = true;
            }
            else { this.rbtnMale.Checked = true; }
            this.iContactPicture = Kontakt.StringToImage(k.sContactPicture);
            this.pictureContact.Image = iContactPicture;

        public static Image StringToImage(string sImage)
        {
            MemoryStream MS = new MemoryStream(Convert.FromBase64String(sImage));
            Image img = Image.FromStream(MS);
            MS.Close();
            return img;
        }

Danke euch, hab den Fehler gefunden. Das MS.Close() ist hier nicht richtig. Das ist schuld an der Fehlermeldung :)
Vielen Dank für eure Mühen!

Thema: Allgemeiner Fehler in der GDI+
Am im Forum: Grafik und Sound

Zitat von Abt
Interessanter Code.... da scheint jemand (vermutlich ein Kollege von Dir..?) von einer anderen Programmiersprache zu kommen und versucht dortige Muster auf C# umzumünzen ;-)
)

Videotutorial Ich wollte den Code jetzt etwas anpassen aber komm hier nicht weiter
Zitat von Abt
Was für Dich eine "Hauptklasse" ist weiß ich nicht

Ich meinte damit nur die Klasse meiner Hauptuserform
Zitat von Abt
Wo auch immer das Image Objekt verwaltet wird; wird wohl nicht richtig verwaltet.

Hmm und was mach ich da jetzt? ?(

Thema: Allgemeiner Fehler in der GDI+
Am im Forum: Grafik und Sound

Zitat von Abt
Es ist nicht mal im Ansatz erkenntlich, wie die Methode ImageToString verwendet wird.

Sorry hier der Code:

public void SetGeneralVars(string sSpitzname, string sTitel, string sBirthday, Image contactPicture)
        {
            this.sSpitzname = sSpitzname;
            this.sTitel = sTitel;
            this.sBirthday = sBirthday;
            this.sContactPicture = ImageToString(contactPicture, contactPicture.RawFormat);
        }

Die ImageToString Methode und SetGeneralVars sitzen beide in der 2. Klasse.
Das Bild wird in der Hauptklasse geöffnet und in eine Variable gespecihert und dann über SetGeneralVars an die zweite Klasse übergeben.

Thema: Allgemeiner Fehler in der GDI+
Am im Forum: Grafik und Sound

Guten Abend zusammen,

ich habe leider mit meinem Code ein kleines Problem und komme nicht weiter.
Ich habe eine Userform mit mehreren Buttons. Dazu eine PictureBox
Das Bild wird wie folgend hochgeladen:

private void btnLoadPicture_Click(object sender, EventArgs e)
        {
            OpenFileDialog OF = new OpenFileDialog();
            OF.Title = "Bitte Bild wählen...";
            OF.Multiselect = false;
            OF.Filter = "Bilder|*.jpeg;*.jpg;*.png;*.bmp|JPG-Bilder|*.jpeg;*jpg|PNG-Bilder|*.png|BMP-Bilder|*.bmp";
            DialogResult DR = OF.ShowDialog();

            if (DR == DialogResult.OK)
            {
                iContactPicture = Image.FromFile(OF.FileName);
                pictureContact.Image = iContactPicture;
            }
            else
            {
                pictureContact.Image = global::Personaldaten.Properties.Resources.Who_is_it;
            }
        }

Drücke ich auf den Button Save wird das Bild in einen String umgewandelt und zusammen mit den Infos aus den Textboxen in einer Datei gespeichert:

 private string ImageToString(Image img, ImageFormat imgFormat)
        {
            string sImg;
            MemoryStream MS = new MemoryStream();
            img.Save(MS, imgFormat); //Hier tritt der Fehler auf!!!!
            sImg = Convert.ToBase64String(MS.ToArray());
            MS.Close();
            return sImg;
        }

Über einen Öffnen Button kann ich jetzt die Inhalte der Textboxen und der PictureBox wieder mit den Inhalten der Datei befüllen. Drücke ich jetzt direkt wieder auf Speichern (weil ich irgendwelche Textboxen geändert habe) bekomme ich den im Titel genannten Fehler. Wenn ich aber erneut ein Bild auswähle bekomme ich diesen Fehler nicht.

Ich hoffe ihr könnt mir weiterhelfen :)

Vielen Dank schon mal.

Thema: "Allgemeiner Fehler in der GDI+" beim Speichern eines Bildes [==> weil der Stream geschlossen wurde]
Am im Forum: Grafik und Sound

Zitat von herbivore

Löscht man die Zeile fs.Close(); oder kommentiert sie aus, verschwindet der Fehler.

herbivore

Das Problem sit, das ich dieseLÖsung nicht nutzen kann, weilin dem Code kein fs.close() vorhanden ist :(
Aber ich werde nochmal ein neues thema mit meinem code eröffnen. Vllt reden wir ja auch aneinander vorbei :)

Thema: "Allgemeiner Fehler in der GDI+" beim Speichern eines Bildes [==> weil der Stream geschlossen wurde]
Am im Forum: Grafik und Sound

aber meiner sieht identisch aus :)
Er hat kein fs.close() und ich auch nicht :P

Thema: "Allgemeiner Fehler in der GDI+" beim Speichern eines Bildes [==> weil der Stream geschlossen wurde]
Am im Forum: Grafik und Sound

Servus herbivore,

nur nutzen leider weder der threadersteller noch ich fs.Close().
Also wir haben das beide nicht in unserem Code :D

Thema: "Allgemeiner Fehler in der GDI+" beim Speichern eines Bildes [==> weil der Stream geschlossen wurde]
Am im Forum: Grafik und Sound

Hallo zusammen,
kann mir jemand weiterhelfen? Ich habe eigentlich den identischen Code wie oben beschrieben und auch das identische Fehlerbild. Leider hilft es auch nichts den MemoryStream offen zu halten. Also wenn ich die Zeile MS.Close() auskommentiere tritt der Fehler immernoch auf.

Wäre dankbar für eure Hilfe

Liebe Grüße Tony