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 Gwinn
Thema: Alle Kombinationen einer Liste ausgeben - Permutation (?)
Am im Forum: Rund um die Programmierung

Ist jetzt nicht schön, sollte aber funktionieren.
Das Zauberwort dabei ist Rekursion.


        static List<string> ausgabestring(string prefix, int startindex, List<string> obst)
        {
            List<string> weniger_obst=new List<string>(obst);

            List<string> output=new List<string>();
            if (obst.Count > 0)
            {
                weniger_obst.RemoveAt(0);
                for (int i = startindex; i ≤ 2; i++)
                {
                    output.AddRange(ausgabestring(prefix + " " + obst[0] + " " + i, i, weniger_obst));
                }
            }
            else 
                output.Add(prefix);
            return output;
        }

Gruß Gwinn

Thema: ComboBox benutzerdefinierte Auswahl ist extrem langsam :(
Am im Forum: GUI: Windows-Forms

Hi diana,

wenn du den string f nicht weiter benötigst, könntest du es mit:


if (e.Index == -1) return;

e.DrawBackground();
Brush brush;

string text = ((ComboBox)sender).Items[e.Index].ToString();

if (text.IndexOf((char)185)≥0)
   brush = Brushes.Red;
else
   brush = Brushes.Black;

e.Graphics.DrawString( text, ((Control)sender).Font, brush, e.Bounds.X, e.Bounds.Y); 
probieren.

Ansonsten hilft dir vielleich tein Blick in [Tutorial] Zeichnen in Windows-Forms-Programmen (Paint/OnPaint, PictureBox)
und den darin verlinkten Artikeln.

Thema: Menuitem Hintergrundfarbe bei Mouseover
Am im Forum: GUI: WPF und XAML

Hi Tactive,

probiers mal mit


<Trigger Property="IsMouseOver" Value="True">

Gruß Gwinn

Thema: Mehrere Listen gleichzeitig sortieren
Am im Forum: Datentechnologien

Hi Coffeebean,

das Sortiern der Liste A ist - glaub ich - nicht das Problem für cDAG, sondern, dass in den anderen Listen dieselbe 'Reihenfolgeveränderung' durchgeführt werden soll.

Offensichtlich stehen die Daten in den Listen in einem inhaltlichen Zusammenhang. Spricht denn etwas dagegen, einfach eine Klasse zu definieren, die die Daten zusammenfasst und diese zu sortieren?

Gruß Gwinn

Thema: Logikproblem mit boolscher Bedingung
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hi und willkommen im Forum.

ich nehme an, dass du diese Stelle meinst:


if (((AkP < 2) || (AkP == 0)) && (Double_Tripple != 1))


setze an der Stelle einen Haltepunkt, lass dir die Werte deiner Variaben anzeigen (überwachen) und führe das Programm schrittweise weiter aus.
Dann weißt du, was dein Programm macht und warum es das tut.

Im übrigen ergibt die Bedingung:


((AkP < 2) || (AkP == 0))
keinen Sinn, weil AkP==0 immer erfüllt ist, wenn AkP<2 wahr ist.

Im Übrigen ist es für uns schwer einen logischen Fehler zu finden, ohne zu wissen, was das Programm überhaupt machen soll.

Gruß Gwinn

Thema: MEF: Interface und Basisklasse
Am im Forum: Rund um die Programmierung

Hi camelord,

warum machst du keinen Export deiner ModuleBase, wenn du deren Implementation benötigst?


[Export(typeof(Contracts.ModuleBase))]
    public class ModuleTouchdata : Contracts.ModuleBase
    {
        [...]
    } 


Gruß Gwinn

Thema: Das Programmier-Spiel: nette Übungsaufgaben für zwischendurch
Am im Forum: Smalltalk

Hi Community,

ich bin leider erst mit etwas Verzögerung dazu gekommen, mir die Lösungen anzusehen.
Funktionieren tun beide. Die Lösung von D4rkScr43m läuft dabei wesentlich performanter ab (auch als meine Lösung).
Da seine Lösung zudem etwas schneller kam, erhält er den Zuschlag für die nächste Aufgabe.

Gruß Gwinn

Thema: Das Programmier-Spiel: nette Übungsaufgaben für zwischendurch
Am im Forum: Smalltalk

Hallo Community,

da wir zuvor schon bei einer Springeraufgabe waren, hier meine Aufgabe:

Gesucht ist eine Funktion, die einen Lösungsweg für das Springerproblem für ein 8x8 Feld liefert.
Als Parameter soll die Funktion die Koordinaten des Startfeldes empfangen.

Viel Spaß

Gwinn

Edit: Um die Laufzeit nicht zu sehr in die Höhe zu treiben soll es genügen, wenn als Startpunkt eine Ecke vorgegeben wird.

Thema: Das Programmier-Spiel: nette Übungsaufgaben für zwischendurch
Am im Forum: Smalltalk

Hi herbivore,

ich hoffe ich habe keine Fehlerquellen übersehen.
Ungültige Argumente führen in meiner Version zu einer entsprechenden Exception.
Die Funktion nimmt als Argumente nichtnegative Zahlen und Basen von 2 bis 62.
Statt einer Exception könnte man auch den Ausgabestring entsprechend ändern. In Hinblick auf eine Anwendung gehe ich jedoch davon aus, dass man zuerst an dem Ergebniss der Berechnung interessiert ist. Deshalb habe ich als Rückgabewert die Quersumme gewählt und schreibe den Ausgabestring in den Parameter str.


        public static int Quersumme(Int32 zahl, Int32 basis, out String str)
        {
            Int32 quersumme = 0;
            Int32 ziffer;
            StringBuilder strbuilder = new StringBuilder();
            Int32 restzahl = zahl;
            if ((basis > 62) || (basis < 2))
                throw new ArgumentOutOfRangeException("Die Basis muss zwischen 2 und 62 liegen.");
            if (zahl < 0)
                throw new ArgumentOutOfRangeException("Die Quersumme ist nur für natürliche Zahlen definiert.");
            while (restzahl > 0)
            {
                ziffer = restzahl % basis;
                quersumme += ziffer;
                if (ziffer < 10)
                    strbuilder.Insert(0, ziffer);
                else
                    if (ziffer > 35)
                        strbuilder.Insert(0, (char)(ziffer + 61));
                    else
                        strbuilder.Insert(0, (char)(ziffer + 55));
                restzahl = (restzahl - ziffer) / basis;
            }
            str = zahl.ToString() + "= " + strbuilder.ToString() + " base " + basis.ToString() + " -> Quersumme " + quersumme.ToString();
            return quersumme;
        }

Gruß Gwinn

Thema: Das Programmier-Spiel: nette Übungsaufgaben für zwischendurch
Am im Forum: Smalltalk

Da ich bis jetz noch keine 'schöne' neue Aufgabe habe, gebe ich die Aufgabenstellung einfach mal frei.

Wer also eine neue Aufgabe stellen möchte, sei herzlich dazu eingeladen, das zu tun.

Gruß Gwinn

Thema: Das Programmier-Spiel: nette Übungsaufgaben für zwischendurch
Am im Forum: Smalltalk

Also,


        public static DateTime EndOfDay(this DateTime day)
        {
            return (day.AddDays(1)).Date;
        }

        public static TimeSpan SubtractEx( DateTime start, DateTime end, Dictionary<DayOfWeek, IList<TimeSpan>> timelist)
        {
            bool negativ = false;
            if (end < start)
            {
                DateTime tmp = start;
                start = end;
                end = tmp;
                negativ = true;
            }

            IList<TimeSpan> todaysList;

            Dictionary<DayOfWeek, TimeSpan> timespanPerDay = new Dictionary<DayOfWeek, TimeSpan>();
            TimeSpan helperTimeSpan;
            TimeSpan timespanPerWeek=new TimeSpan();
            foreach (DayOfWeek dayofweek in Enum.GetValues(typeof(DayOfWeek)))
            {
                timelist.TryGetValue(dayofweek,out todaysList);
                helperTimeSpan = new TimeSpan();
                if (todaysList != null)
                {
                    for (int i = 0; i < todaysList.Count; i += 2)
                    {
                        helperTimeSpan += todaysList[i + 1] - todaysList[i];
                    }
                    timespanPerDay.Add(dayofweek, helperTimeSpan);
                    timespanPerWeek += helperTimeSpan;
                }
            }

            int fulldays=(end.Date - start.EndOfDay()).Days;
            int fullweeks = (int)Math.Floor(fulldays / 7.0);
            TimeSpan result = new TimeSpan(fullweeks*timespanPerWeek.Ticks);

            DateTime calcend = end.Subtract(new TimeSpan(fullweeks*7,0,0,0));

            DateTime time = start;
            timelist.TryGetValue(time.DayOfWeek,out todaysList);
            if (todaysList != null)
            {
                for (int i = 0; i < todaysList.Count; i += 2)
                {
                    if (time.TimeOfDay≤todaysList[i])
                        result+=(todaysList[i+1]-todaysList[i]);
                    else
                        if (time.TimeOfDay<todaysList[i+1])
                            result+=(todaysList[i+1]-time.TimeOfDay);
                }
            }
            time = time.AddDays(1);
            while (time.Date < calcend.Date)
            {
                if (timespanPerDay.TryGetValue(time.DayOfWeek, out helperTimeSpan));
                    result += helperTimeSpan;
                time = time.AddDays(1);
            }
            time=calcend;

            timelist.TryGetValue(time.DayOfWeek, out todaysList);

            if (todaysList != null)
            {
                for (int i = 0; i < todaysList.Count; i += 2)
                {
                    if (todaysList[i+1]<calcend.TimeOfDay)
                        result+=(todaysList[i+1]-todaysList[i]);
                    else
                        if (todaysList[i]<calcend.TimeOfDay)
                            result +=(calcend.TimeOfDay - todaysList[i]);
                }
            }
            if (negativ)
                result = -result;
            return result;
        }

Das liefert jetz mit einer Ausnahme deine Testergebnisse zurück.

DateTime.Substract liefert nämlich nicht 0, sondern einen negativen Wert, falls das Enddatum vor dem Startdatum liegt.

Gruß Gwinn

Thema: Das Programmier-Spiel: nette Übungsaufgaben für zwischendurch
Am im Forum: Smalltalk

Hallo,

ich hab mal an der Performance gearbeitet...


        public static DateTime EndOfDay(this DateTime day)
        {
            return (day.AddDays(1)).Date;
        }

        public static TimeSpan SubtractEx( DateTime start, DateTime end, Dictionary<DayOfWeek, IList<TimeSpan>> timelist)
        {
            if (end < start)
                throw new ArgumentException("Das Enddatum muss nach dem Startdatum liegen.");

            IList<TimeSpan> todaysList;

            Dictionary<DayOfWeek, TimeSpan> timespanPerDay = new Dictionary<DayOfWeek, TimeSpan>();
            TimeSpan helperTimeSpan;
            TimeSpan timespanPerWeek=new TimeSpan();
            foreach (DayOfWeek dayofweek in Enum.GetValues(typeof(DayOfWeek)))
            {
                try
                {
                    todaysList = timelist[dayofweek];
                }
                catch (KeyNotFoundException)
                {
                    todaysList = null;
                }
                helperTimeSpan = new TimeSpan();
                if (todaysList != null)
                {
                    for (int i = 0; i < todaysList.Count; i += 2)
                    {
                        helperTimeSpan += todaysList[i + 1] - todaysList[i];
                    }
                    timespanPerDay.Add(dayofweek, helperTimeSpan);
                    timespanPerWeek += helperTimeSpan;
                }
            }

            int fulldays=(end.Date - start.EndOfDay()).Days;
            int fullweeks = (int)Math.Floor(fulldays / 7.0);
            TimeSpan result = new TimeSpan(fullweeks*timespanPerWeek.Ticks);

            DateTime calcend = end.Subtract(new TimeSpan(fullweeks*7,0,0,0));

            DateTime time = start;
            try
            {
                todaysList = timelist[time.DayOfWeek];
            }
            catch (KeyNotFoundException)
            {
                todaysList = null;
            }
            if (todaysList != null)
            {
                for (int i = 0; i < todaysList.Count; i += 2)
                {
                    if (time.TimeOfDay≤todaysList[i])
                        result+=(todaysList[i+1]-todaysList[i]);
                    else
                        if (time.TimeOfDay<todaysList[i+1])
                            result+=(todaysList[i+1]-time.TimeOfDay);
                }
            }
            time = time.AddDays(1);
            while (time.Date < calcend.Date)
            {
                result += timespanPerDay[time.DayOfWeek];
                time = time.AddDays(1);
            }
            time=calcend;

            try
            {
                todaysList = timelist[time.DayOfWeek];
            }
            catch (KeyNotFoundException)
            {
                todaysList = null;
            }
            if (todaysList != null)
            {
                for (int i = 0; i < todaysList.Count; i += 2)
                {
                    if (todaysList[i+1]<calcend.TimeOfDay)
                        result+=(todaysList[i+1]-todaysList[i]);
                    else
                        if (todaysList[i]<calcend.TimeOfDay)
                            result +=(calcend.TimeOfDay - todaysList[i]);
                }
            }
            return result;
        }
    }

Ich hoffe das genügt jetzt deiner Aufgabenstellung...

Gruß Gwinn

Thema: Das Programmier-Spiel: nette Übungsaufgaben für zwischendurch
Am im Forum: Smalltalk

Oups,

da hatte ich mich an die Bearbeitung gemacht, bevor ich alles gelesen hatte. Ich werd mich später am Tag damit nochmal befassen...

Gruß Gwinn

Thema: Das Programmier-Spiel: nette Übungsaufgaben für zwischendurch
Am im Forum: Smalltalk

Hi,

folgender Ansatz ist zumindest durch meine Tests gelaufen:


        public static TimeSpan SubtractEx( DateTime start, DateTime end, Dictionary<DayOfWeek, IList<TimeSpan>> timelist)
        {
            if (end < start)
                throw new ArgumentException("Das Enddatum muss nach dem Startdatum liegen.");
            DateTime time = start;
            TimeSpan result = new TimeSpan();

            IList<TimeSpan> todaysList;

            DateTime endofday;
            bool lastday = false;
            bool firstday = true;

            while (time < end)
            {
                todaysList = timelist[time.DayOfWeek];
                endofday = new DateTime(time.Year, time.Month, time.Day + 1);
                if (endofday > end)
                    lastday = true;
                if (todaysList != null)
                {
                    for (int i = 0; i < todaysList.Count; i += 2)
                    {
                        if (firstday)
                        {
                            if (time.TimeOfDay ≥ todaysList[i])
                            {
                                time = time.Subtract(todaysList[i]);
                                firstday = false;
                            }
                            else
                                if (time.TimeOfDay<todaysList[i+1])
                                    time = time.Subtract(time.TimeOfDay);
                        }
                        time = time.Add(todaysList[i]);
                        if (!lastday)
                        {
                            result = result.Add(todaysList[i + 1] - time.TimeOfDay);
                        }
                        else
                        {
                            if (time > end)
                                break;
                            result = result.Add(((todaysList[i + 1] < end.TimeOfDay) ? todaysList[i + 1] : end.TimeOfDay) - time.TimeOfDay);
                        }
                        time = time.Subtract(time.TimeOfDay);

                    }
                }
                time = endofday;
                firstday = false;
            }
            return result;
        }

Gruß Gwinn

Thema: neues Tab im TabControl aktivieren
Am im Forum: GUI: WPF und XAML

Hi MorphieX,

spendier deinem EventHandler noch ein

e.Handled=true;
Dann sollte es auch klappen.


private void dataGrid1_MouseDoubleClick(object sender, MouseButtonEventArgs e)
{
     AddTabItem();
     e.Handled = true;
}

Gruß Gwinn

Thema: Verschiedene Währungen in einem Excelblatt
Am im Forum: Office-Technologien

Hi gijoe222,

eine halbe Lösung wäre es, das ganze nicht als Währung zu formatieren sondern als Zahl mit vorgestelltem Dollarzeichen.

$ #.##0,00
Eine halbe Lösung ist es deswegen, weil du dann noch immer einen Tausenderpunkt und ein Dezimalkomma hast und nicht andersherum, wie es in den USA richtig wäre.

Gruß Gwinn

Thema: Binomialkoeffizienten berechnen
Am im Forum: Rund um die Programmierung

Hi Blogger,

dein Fehler steckt in diesem Block:


                    for (uint x = 1; x ≤ y; x++)
                    {
                        facy = fack * x; // Fakultät von (n-i) wird berechnet.

                    }

Es müsste heißen:

                    for (uint x = 1; x ≤ y; x++)
                    {
                        facy = facy * x; // Fakultät von (n-i) wird berechnet.

                    }

Dann funktioniert es auch mit deinem Quellcode. Das hättest du mit Hilfe von ein paar Haltepunkten und dem Debugger auch herausfinden können.

Darüber hinaus wirst du bei größerem n auf Grenzen stoßen, weil die Fakultäten die du berechnest schnell zu einem Speicherüberlauf führen werden. Für den Binomialkoeffizienten brauchst du auch gar nicht die ganze Fakultät, sondern nur das produkt der ersten (oder letzten, je nach dem ob man mit 1 oder mit n zu multiplizieren beginnt) i Glieder. Da darfst du dir aber selbst mal Gedanken machen...

Gruß Gwinn

Thema: XNA - 3D Drehen/Neigen (Kamera)
Am im Forum: Grafik und Sound

Hi spike1302,

das was du beschreibst könnte ggf. die Folge eines Gimbal Lock sein.
Vermeiden kannst du das, indem du die Rotation statt mit einer 3D-Rotationsmatrix mit einem Quaternion berechnest.

Eine Anleitung dazu findest du z.B. im Quaternion Tutorial.
Auch wenn es dort um die Rotation des Objekts und nicht der Kamera geht...

Gruß Gwinn

Thema: Interpolation mit alglib: aus mehreren x- und y-Werte die Funktion durch diese Punkte bestimmen
Am im Forum: Rund um die Programmierung

Hi SHaThaL,

bist du sicher, dass du die rictige Funktion benutzt?
spline2dbuildbicubic ist gedacht für Splines in zwei Veränderlichen (Ordinaten x und y) So wie es mir aber scheint, möchtest du aber auf eine Funktion in einer Veränderlichen fitten und müsstest dafür
spline1dbuildcubic benutzen.

Gruß Gwinn

Thema: OpenXML SDK 2.0: Erste Zeile bei Exceldokument einfrieren
Am im Forum: Datentechnologien

Hi 1nf1n1ty,

dieser Code erstellt ein leeres Worksheet, in dem die erste Zeile eingefroren ist.
Der Knackpunkt dabei ist die Pane, die in die SheetView eingefügt wird.


            Worksheet worksheet1 = new Worksheet() { MCAttributes = new MarkupCompatibilityAttributes() { Ignorable = "x14ac" } };
            worksheet1.AddNamespaceDeclaration("r", "http://schemas.openxmlformats.org/officeDocument/2006/relationships");
            worksheet1.AddNamespaceDeclaration("mc", "http://schemas.openxmlformats.org/markup-compatibility/2006");
            worksheet1.AddNamespaceDeclaration("x14ac", "http://schemas.microsoft.com/office/spreadsheetml/2009/9/ac");
            SheetDimension sheetDimension1 = new SheetDimension() { Reference = "A1" };

            SheetViews sheetViews1 = new SheetViews();

            SheetView sheetView1 = new SheetView() { TabSelected = true, WorkbookViewId = (UInt32Value)0U };
            Pane pane1 = new Pane() { VerticalSplit = 1D, TopLeftCell = "A2", ActivePane = PaneValues.BottomLeft, State = PaneStateValues.Frozen };
            Selection selection1 = new Selection() { Pane = PaneValues.BottomLeft, ActiveCell = "F8", SequenceOfReferences = new ListValue<StringValue>() { InnerText = "F8" } };

            sheetView1.Append(pane1);
            sheetView1.Append(selection1);

            sheetViews1.Append(sheetView1);
            SheetFormatProperties sheetFormatProperties1 = new SheetFormatProperties() { BaseColumnWidth = (UInt32Value)10U, DefaultRowHeight = 12.75D, DyDescent = 0.2D };
            SheetData sheetData1 = new SheetData();

            worksheet1.Append(sheetDimension1);
            worksheet1.Append(sheetViews1);
            worksheet1.Append(sheetFormatProperties1);
            worksheet1.Append(sheetData1);

            worksheetPart1.Worksheet = worksheet1;

Um auf diesen Code zu kommen, kannst du dir einfach ein Excel-Dokument erstellen, das die von dir gewünschte Form hat, und dann mit dem Open XML SDK Productivity Tool den Code dazu erstellen lassen (Reflect Code).

Gruß Gwinn

Thema: WPF: Raster mit MausEvent erzeugen? Idee & Hilfe.
Am im Forum: GUI: WPF und XAML

Hi Disaster2k,

Zitat
Ich hab das Probiert mit lauter rectangles. Allerdings können das sehr viele Quadrate werden und dann läuft das nicht mehr flüssig.

Ich sehe da das Problem nicht, wenn du bei Rectangles die Ereignisse MouseEnter und MouseLeave abfängst und jeweils die Füllung änderst.


        Color lastcol;
        private void Rectangle_MouseEnter(object sender, MouseEventArgs e)
        {
            Rectangle rect = sender as Rectangle;
            SolidColorBrush brush=rect.Fill as SolidColorBrush;
            lastcol = brush.Color;
            brush.Color=Color.Multiply(lastcol,2f);
        }

        private void Rectangle_MouseLeave(object sender, MouseEventArgs e)
        {
            Rectangle rect = sender as Rectangle;
            rect.Fill = new SolidColorBrush(lastcol);
        }

Du musst ja nicht alle Felder neuzeichnen, sondern nur die Felder, die du mit der Maus überfährst.

Gruß Gwinn

Thema: XML-Datei einlesen und mittels Nodes-Attributen in der TreeView darstellen.
Am im Forum: Datentechnologien

Hi X1C3,

da steckt garkein Vodoo hinter. Setz doch einfach mal einen Haltepunkt in die Zeile, die den Fehler auswirft und lass den Debugger starten.
Die ersten beiden Ebenen laufen ohne weiteres durch, doch dann kommst du in der dritten Ebene auf author:
author hat ein Child, nämlich "Gambardella, Matthew". Das Progemm läuft also in den Block der If-Bedingung und versucht dort auf das erste Element der Attributes-Liste zuzugreifen. author hat aber gar keine Attribute. Deshalb liefert Attributes null zurück und der Zugriff auf Attributes[0] schlägt fehl, was dir der Debugger mit

Fehler
System.NullReferenceException: Object reference not set to an instance of an object.
um die Ohren haut.

Bevor du also um Hilfe schreist, was denn falsch gelaufen sein könnte, bemüh doch erst einmal die Bordmittel von VisualStudio.

Gruß Gwinn

(Edith ist heute einfach zu müde...)

Thema: TreeView: SelectedNode soll visuell markiert bleiben, wenn das TreeView den Fokus verliert
Am im Forum: GUI: Windows-Forms

Hi Bi0logiCaL,

zunächst einmal funktioniert es bei mir, wenn ich HideSelection auf false setze.

Wenn das bei dir aber absolut nicht will (warum auch immer) hätte ich sonst noch einen Workaround für dich.

Du setzt einfach bei jeder Änderung der Auswahl manuell die Farben:


        private TreeNode _selected = null;
        private void treeView1_AfterSelect(object sender, TreeViewEventArgs e)
        {
            if (_selected != null)
            {
                _selected.ForeColor = SystemColors.ControlText;
                _selected.BackColor = treeView1.BackColor;
            }
            _selected=treeView1.SelectedNode;
            _selected.ForeColor = SystemColors.HighlightText;
            _selected.BackColor = SystemColors.Highlight;
        }

Gruß Gwinn


[Edith schreibt] Alternativ kann man natürlich auch den Code auf das Leave und das Enter Ereignis aufteilen, dann wird der Farbwechsel nur durchgeführt, wenn das TreView den Fokus erhält bzw verliert.

Thema: Wortart ermitteln, vielleicht via Word?
Am im Forum: Rund um die Programmierung

Hi,

zu Canoonet hab ich folgendes in den AGBs gefunden:

Zitat
Urheberrecht

Sämtliche Rechte an der im Rahmen dieses Online-Angebots entwickelten Software, den zugrunde liegenden Datenbanken und sonstigen Inhalten liegen bei der Canoo Engineering AG, soweit nicht ausdrücklich ein anderer Urheber oder Rechtsinhaber genannt wird. Die Rechte der Inhalte des Bedeutungswörterbuchs liegen bei der Universität Tübingen. Jede Verwendung der Software, der Daten oder der sonstigen Inhalte außer in der Form, wie sie unter www.canoo.net angeboten und ermöglicht wird, ist nicht erlaubt. Es ist insbesondere nicht gestattet, jedwede Art von Inhalten per Script oder auf andere Weise automatisiert abzufragen.

Eine Scriptabfrage ist also ausdrücklich nicht erlaubt.

Gruß Gwinn

Thema: MDI Forms - Icon in Menüleiste
Am im Forum: GUI: Windows-Forms

Hi Bernd23,

ich hab mal nen kleinen Workaround dafür geschrieben.
Die Idee ist, im Hauptfenster für den MenuStrip das ItemAdded Ereignis abzufangen und das hinzugefügte Item unsichtbar zu machen.

Damit man überhaupt noch Items hinzufügen kann, hab ich noch ein Steuer-Flag spendiert.


    public partial class Form1 : Form
    {
        private int counter = 0;
        private bool canAddItem = true;
        public Form1()
        {
            InitializeComponent();
            canAddItem = false;
        }

        private void menuStrip1_ItemAdded(object sender, ToolStripItemEventArgs e)
        {
            if (!canAddItem)
                e.Item.Visible = false;
        }
    }

Ich hoffe, du kannst damit etwas anfangen.

Gruß Gwinn

Thema: Datei in "Eigene Dokumente" speichern: Suche Systemvariable für diesen Pfad
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hi hfb11,

bevor dieser Thread mit Hinweis auf die Forenregeln geschlossen wird, möchte ich dir schnell noch das richtige Stichwort entgegenwerfen:

Das was du suchst, ist die SpecialFolders-Aufzählung.

Gruß Gwinn

Thema: ListView mit Gruppen: Insert-Methode funktioniert nicht wie erwartet
Am im Forum: GUI: Windows-Forms

Hi VanKurt,

leider scheint es so, dass sich die ListView bei der Verwendung von Gruppen nicht wie erwartet verhält.
Die Items werden nämlich grundsätzlich in der Reihenfolge dargestellt, in der sie der Gruppe hinzugefügt werden und nicht nach der Reihenfolge in der sie in der Items-Auflistung stehen.

Im Übrigen fügt dein Codebeispiel das Item zweimal in die Groups[0] ein. Das erste mal bei der Erstellung und danach noch einmal mit Insert.

Ein Workaround für das Problem wäre, die Gruppe für alle Elemente aus Groups[0] erst auf null zu setzen und danach wieder (in der richtigen Reihenfolge) auf Group[0].


            ListViewItem lvi = new ListViewItem("Item 0");
            listView1.Items.Insert(0, lvi);
            listView1.Groups[0].Items.Insert(0, lvi);

            foreach (ListViewItem item in listView1.Items)
            {
                item.Group = null;
                item.Group = listView1.Groups[0];
            }

@herbivore
Der Code funktioniert bei mir auch, wenn ich ihn im Konstruktor verwende. Wenn ich ihn in eine Funktion schreibe, die später ausgeführt wird, funktioniert es nicht mehr.
Wenn ListView.View auf List gesetzt ist, dann funktioniert der Code auch wie erwartet, doch dann ist ja gerade die Gruppierungsfunktion wieder weg.

Thema: Synchrone Zeit ohne ständige Internetverbindung sicherstellen und vor Manipulationen schützen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hi Nightmare,

wär es vielleicht eine Möglichkeit, eine eigene Uhrzeitklasse zu schreiben, die bei Programmstart die NTP-Zeit bekommt und eine Stopwatch startet.

Aus der Startzeit und der Stopwatch.Elapsed errechtnet eine Funktion dann die 'richtige' Zeit ohne auf die Systemzeit angewiesen zu sein.

Gruß
Gwinn

Thema: Mehrere in sich abgeknickte Linien zeichnen, die aber mit den anderen Linien nicht verbunden sind
Am im Forum: Grafik und Sound

Hi Tornado,

ergaänze einfach ein


Points = new List<Point>();
im OnMouseDown Ereignis.

total spiechert nur einen Verweis auf das jeweilige Points-Object, das ihm übergeben wird. deshalb musst du für Points immer eine neue Liste erstellen, wenn du eine neue Linie zeichnen möchtest.

Gruß Gwinn

Thema: URL aus Dokumenteneigenschaften auslesen
Am im Forum: Basistechnologien und allgemeine .NET-Klassen

Hi todo,

ich glaub ich hab erraten, was du suchst.

Du suchst das Ziel eines (Web-)Verweises (im Beispiel test.url) der in einem bestimmten Ordner (d:\) liegt. Ist das richtig?


            Shell32.Shell Shell = new Shell32.Shell();

            Shell32.Folder Ordner = Shell.NameSpace(@"d:\");

            Shell32.FolderItem Datei = Ordner.Items().Item("test.url");

            Shell32.ShellLinkObject Verk = (Shell32.ShellLinkObject)Datei.GetLink;

            string Link_Path = Verk.Path;

Alternativ kannst du die Datei (nichts anderes ist es) auch öffnen und den Inhalt auslesen.

Gruß Gwinn