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: Binding auf Property aus ViewModel
Am im Forum: GUI: WPF und XAML

Zitat von Palladin007
{Binding DataContext.MyProperty, RelativeSource={RelativeSource AncestorType=StackPanel}}

Normalerweise ist das nicht notwendig, das macht man nur, wenn man aus irgendeinem Grund einen anderen DataContext hat, das aber nicht ändern kann.

Das war aber jetzt genau das, was ich gebraucht habe
Mein DataContext für den Button hab ihc ja auf MainVM gelegt, da dort die UpdateViewcommand liegt.
Aber die Variable für meine Prüfung liegt in einer anderen VM.

Vielen Dank dir. Jetzt läuft es so, wie ich mir das vorstelle...

Thema: Binding auf Property aus ViewModel
Am im Forum: GUI: WPF und XAML

Danke dir, das war schon der Hinweis, der mir gefehlt hat. Die Variablen liegen in einer anderen VM.
Ich vermute, es gibt keine Möglichkeit, für die Commands einen anderen DataContext zu setzen, als für meine Variablen, oder?

Thema: Binding auf Property aus ViewModel
Am im Forum: GUI: WPF und XAML

Hallo zusammen,

ich komm leider bei meinem Programm nicht weiter.
Ich möchte drei Buttons in Abhängigkeit von zwei Variablen in meinem ViewModel auf IsEnabled = True setzen bzw false.
Dazu habe ich mit den MultiDataTriggern versucht auf die Variablen zu binden. Aber leider klappt das nicht so wie ich mir das vorstelle.
Habt ihr noch eine Idee?


                    <StackPanel Orientation="Vertical" Margin="200 10" Grid.ColumnSpan="2">
                        <StackPanel.Resources>
                            <Style BasedOn="{StaticResource {x:Type Button}}" TargetType="Button">
                                <Setter Property="Background" Value="{DynamicResource clrPrimary}"/>
                                <Setter Property="Margin" Value="0 0 0 10"/>
                                <Setter Property="FontSize" Value="20"/>
                                <Setter Property="Height" Value="Auto"/>
                                <Setter Property="IsEnabled" Value="True"/>
                                <Style.Triggers>
                                    <MultiDataTrigger>
                                        <MultiDataTrigger.Conditions>
                                            <Condition Binding="{Binding AdaptIsReady}" Value="false"/>
                                            <Condition Binding="{Binding UnitIsReady}" Value="false"/>
                                        </MultiDataTrigger.Conditions>
                                        <Setter Property="IsEnabled" Value="False"/>
                                    </MultiDataTrigger>
                                </Style.Triggers>
                            </Style>
                        </StackPanel.Resources>
                        <Button Content="FUT starten" DataContext="{Binding Source={StaticResource Locator}, Path=MainVM}" Command="{Binding UpdateViewCommand}" CommandParameter="startFUT"/>
                        <Button Content="Manuell testen" DataContext="{Binding Source={StaticResource Locator}, Path=MainVM}" Command="{Binding UpdateViewCommand}" CommandParameter="manuellTesting"/>
                        <Button Content="PVIS Befehle ausführen" DataContext="{Binding Source={StaticResource Locator}, Path=MainVM}" Command="{Binding UpdateViewCommand}" CommandParameter="pvisAction"/>
                    </StackPanel>


        private bool adaptIsReady;
        public bool AdaptIsReady
        {
            get { return adaptIsReady; }
            set
            {
                if (adaptIsReady != value)
                {
                    adaptIsReady = value;
                    RaisePropertyChanged();
                }
            }
        }

        private bool unitIsReady;
        public bool UnitIsReady
        {
            get { return unitIsReady; }
            set
            {
                if (unitIsReady != value)
                {
                    unitIsReady = value;
                    RaisePropertyChanged();
                }
            }
        }

Thema: Custom Control Template mit mehreren Texten
Am im Forum: GUI: WPF und XAML

So einfach gehts, danke

Thema: WPF: Default-Style für Elemente in einem Custom Control wird nicht gefunden
Am im Forum: GUI: WPF und XAML

Der Beitrag ist schon etwas älter, aber vielleicht lest ihr ja noch mit
Wie funktioniert das ganze, wenn das Control Template keinen Button enthält, sondern sowas in der Art:


<Style x:key="{x:Type custom:OverviewButton}" TargetType="{x:Type Button}">
        <Setter Property="Background" Value="Aqua"/>
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type Button}">
                    <Grid>
                        <Rectangle Grid.ColumnSpan="3" Grid.RowSpan="2" RadiusX="10" RadiusY="10" Fill="AliceBlue" Margin="10,20"/>
                        <Grid Margin="10,20">
                            
                            <Grid Width="30" Height="50" Background="yellow" VerticalAlignment="Top" HorizontalAlignment="Left" Margin="20,0">
                                <Grid.Effect>
                                    <DropShadowEffect BlurRadius="20" RenderingBias="Quality" ShadowDepth="1"/>
                                </Grid.Effect>
                                <materialDesign:PackIcon Kind="{TemplateBinding Logo}" VerticalAlignment="Bottom" HorizontalAlignment="Center" Margin="0, 5"/>
                            </Grid>
                            <TextBlock Text="{TemplateBinding Heading}" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="10" FontFamily="Calibri" FontSize="25"/>
                            <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,20,10,0">
                                <TextBlock  Text="{TemplateBinding Text}" HorizontalAlignment="Center" VerticalAlignment="Center" FontFamily="Calibri" FontSize="55"/>
                            </StackPanel>
                        </Grid>
                    </Grid>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>

Dann funktioniert das mit den Default Style für einen Button ja nicht. Ich bräuchte da etwas Hilfe
Ich möchte das kompllete Template als Button ansehen und wenn ich den DefaultStyle eines Button ändere, soll in diesem Fall die Fill Value geändert werden.
Kann man das der Value mit einem Binding sagen?

Lg TheSoulT

Thema: Custom Control Template mit mehreren Texten
Am im Forum: GUI: WPF und XAML

Jemand noch eine Idee hier?

Thema: Custom Control Template mit mehreren Texten
Am im Forum: GUI: WPF und XAML

Hallo pinki,

das sieht doch gut aus. Danke dir!

Jetzt hab ich dabei noch das Problem, dass ich eine StaticResource nutze für meine Hauptfarbe (Siehe Zeile 10) die ich im ganzen Projekt nutze. Diese ist in der App.xaml definiert wie folgend:


<Application.Resources>
        <SolidColorBrush x:Key="clrPrimary" Color="#f7ba0b" />
    </Application.Resources>

Möchte ich jetzt den CustomButton aufrufen, bekomme ich die Fehlermeldung:
Die Ressource mit dem Namen "clrPrimary" kann nicht gefunden werden...

Den CustomButton an sich habe ich in der Generic.xaml erstellt. Dort wird jetzt auch die clrPrimary für den Background gesetzt.
Hast du oder jemand anderes hier auch noch einen Tipp?

Thema: Custom Control Template mit mehreren Texten
Am im Forum: GUI: WPF und XAML

Hey zusammen,

ich hoffe, ihr könnt mich bei einem weiteren Problem in meinem Projekt unterstützen.
Ich habe mir ein ControlTemplate als Grid Ressource erstellt (Im Anhang auch ein Screenshot von dem Ergebnis):


<Grid.Resources>
                <Style TargetType="Button">
                    <Setter Property="Background" Value="Aqua"/>
                    <Setter Property="Template">
                        <Setter.Value>
                            <ControlTemplate>
                                <Grid>
                                    <Rectangle Grid.ColumnSpan="3" Grid.RowSpan="2" RadiusX="10" RadiusY="10" Fill="AliceBlue" Margin="10,20"/>
                                    <Grid Margin="10,20">
                                        <Grid Width="30" Height="50" Background="{StaticResource clrPrimary}" VerticalAlignment="Top" HorizontalAlignment="Left" Margin="20,0">
                                            <Grid.Effect>
                                                <DropShadowEffect BlurRadius="20" RenderingBias="Quality" ShadowDepth="1"/>
                                            </Grid.Effect>
                                            <MaterialDesign:PackIcon Kind="About" VerticalAlignment="Bottom" HorizontalAlignment="Center" Margin="0, 5"/>
                                        </Grid>
                                        <TextBlock Text="{Binding RelativeSource={RelativeSource TemplatedParent}, Path=Content}" HorizontalAlignment="Right" VerticalAlignment="Top" Margin="10" FontFamily="Calibri"/>
                                        <StackPanel Orientation="Horizontal" HorizontalAlignment="Right" VerticalAlignment="Center" Margin="0,20,0,0">
                                            <TextBlock Text="40/100" HorizontalAlignment="Center" VerticalAlignment="Center" FontFamily="Calibri" FontSize="35"/>
                                        </StackPanel>
                                    </Grid>
                                </Grid>
                            </ControlTemplate>
                        </Setter.Value>
                    </Setter>
                </Style>
            </Grid.Resources>

Hier sind zwei Texte und ein Logo, welche ich gern beim Aufruf des Template in xaml unterschiedlich belegen würde. Dazu hab ich schon die Info mit dem Binding an den Content gefunden, was auch super funktioniert. Aber wie kann ich den zweiten Text und das Logo ändern?


<Button Grid.Column="0" Grid.Row="1" Content="Offene Geräte&#xa;Eigen/Gesamt"/>

Ich benötige dann ja sowas wie Content2 = "" oder so. Kann man eigene Properties erstellen oder habt ihr eine Idee, wie ich hier weiterkomme? Hab dazu leider nichts gefunden.

Lg 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!